example - listview desplegable android studio
¿Cómo puedo crear iconos para elementos de menú en ListView de Android? (2)
De los documentos de google para ArrayAdapter.
Para usar algo que no sea TextViews para la visualización de la matriz, por ejemplo, ImageViews, o para que algunos datos además de toString () llenen las vistas, anule getView (int, View, ViewGroup) para devolver el tipo de vista que desea.
Estoy usando un ListView
para mostrar la pantalla principal de mi aplicación.
La pantalla principal es esencialmente un menu
para acceder a las diferentes secciones de la aplicación. Actualmente, tengo ListView
cuyo contenido se agrega programáticamente en el método onCreate
.
Aquí está el fragmento de código que hace esto:
String[] mainItems = {
"Inbox", "Projects", "Contexts", "Next Actions"
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1, mainItems));
registerForContextMenu(getListView());
}
Entonces, el menú es esencialmente solo un grupo de nodos con el texto contenido en la matriz mainItems. Sé que puedo crear un diseño XML (es decir, R.layout.mainMenu_item
) que tiene ImageView y TextView en él, pero no estoy seguro de cómo configurar el icono de ImageView. He visto que hay un método setImageResouce (int resId), pero la forma de usar esto cuando se genera con un ArrayAdapter me está eludiendo. ¿Hay una mejor manera de hacer esto?
Lo que normalmente hago para un ListView es implementar mi propio Adaptador extendiendo la práctica clase BaseAdapter. Uno de los métodos abstractos que implementará será getView () como se menciona en el póster anterior. Desde allí, puede inflar un diseño que contenga un ImageView, obtener una referencia al mismo usando findViewById y establecer la imagen en cualquier drawable que haya añadido a sus recursos.
public View getView(int position, View convertView, ViewGroup parent) {
View row = inflater.inflate(R.layout.menu_row, null);
ImageView icon = (ImageView) row.findViewById(R.id.icon);
icon.setImageResource(..your drawable''s id...);
return view;
}