Last active
September 12, 2016 12:32
-
-
Save Diti/6ad5167f4ebc53a7cf342697c21effea to your computer and use it in GitHub Desktop.
[Android] Simple ListView-based “menu” using compound drawables.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package me.diti.tests.android.exampleimagemenu; | |
import android.os.Bundle; | |
import android.support.v7.app.AppCompatActivity; | |
import android.util.Log; | |
import android.view.View; | |
import android.widget.AdapterView; | |
import android.widget.ListView; | |
import android.widget.Toast; | |
import java.util.ArrayList; | |
import me.diti.tests.android.exampleimagemenu.entity.ImageMenuItem; | |
public class MainActivity extends AppCompatActivity { | |
static final int ITEM_MY_ACCOUNT = 0; | |
static final int ITEM_MY_SETTINGS = 1; | |
static final int ITEM_SHOW_TOAST = 2; | |
static final int ITEM_CLOSE_APP = 3; | |
static final int ITEM_DISABLED = 4; | |
static final int ITEM_DISABLED_NO_ICON = 5; | |
private final ArrayList<ImageMenuItem> menuItems = new ArrayList<>(); | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
final ListView listView = (ListView)findViewById(R.id.listView); | |
menuItems.add(ITEM_MY_ACCOUNT, new ImageMenuItem(R.drawable.ic_person_black_24dp, R.string.menuitem_my_account)); | |
menuItems.add(ITEM_MY_SETTINGS, new ImageMenuItem(R.drawable.ic_settings_black_24dp, R.string.menuitem_my_settings)); | |
menuItems.add(ITEM_SHOW_TOAST, new ImageMenuItem(R.drawable.ic_error_outline_black_24dp, R.string.menuitem_show_toast)); | |
menuItems.add(ITEM_CLOSE_APP, new ImageMenuItem(R.drawable.ic_close_black_24dp, R.string.menuitem_close_app)); | |
menuItems.add(ITEM_DISABLED, new ImageMenuItem(R.drawable.ic_remove_circle_outline_black_24dp, R.string.menuitem_disabled)); | |
menuItems.add(ITEM_DISABLED_NO_ICON, new ImageMenuItem(0, R.string.menuitem_disabled_no_icon)); // Example without icon | |
// Populate listView with menuItems | |
listView.setAdapter(new ImageMenuAdapter(this, menuItems) { | |
@Override | |
public boolean isEnabled(int position) { | |
switch (position) { | |
case ITEM_DISABLED: | |
case ITEM_DISABLED_NO_ICON: | |
return false; | |
default: | |
return true; | |
} | |
} | |
}); | |
// Handle clicks on menu items | |
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { | |
@Override | |
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { | |
switch (position) { | |
case ITEM_MY_ACCOUNT: | |
case ITEM_MY_SETTINGS: | |
case ITEM_SHOW_TOAST: | |
Toast.makeText(MainActivity.this, "Clicked: " + getString(menuItems.get(position).text), Toast.LENGTH_SHORT).show(); | |
break; | |
case ITEM_CLOSE_APP: | |
finishAffinity(); | |
break; | |
default: | |
Log.w("ImageMenu", "Menu item at position #" + position + " not yet implemented"); | |
} | |
} | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment