Android ListView con 2 TextViews por artículo
Todos los ejemplos que he visto en la red contienen sólo 1 TextView por elemento y cargan datos de una matriz. No entiendo cómo puedo especificar qué datos van a donde. Por ejemplo mi disposición del artículo tiene este aspecto:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/receiver" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
¿Cómo puedo guardar datos en la matriz para que pueda ser utilizado en ListView con este diseño?
- Android L: Desplazamiento rápido para el RecyclerView
- La vista de lista con zoom no se desplaza
- ListView setOnItemClickListener no funciona en la vista de lista personalizada
- Optimización de RecyclerView / ListView
- ¿Hay algo como NSDictionary en android?
- Adaptador de vista personalizada con filtro Android
- Actualizar el valor del elemento ListView en Android
- Cómo determinar cuándo ListView se ha completado
- Mensajes de error de Android en conflicto: el hijo especificado ya tiene un padre. Debe llamar a removeView () en el padre del niño primero
- Hacer vista de encabezado (no encabezado de sección) de ListView Stick en la parte superior
- Cálculo de la altura de cada fila de un ListView
- ListView no muestra los valores correctos después de desplazarse
- Monodroid - Manejo Haga clic en eventos dentro de las filas ListAdapter
Supongo que no lo has visto muy bien. 🙂 Hay toneladas de ejemplos por ahí que muestran cómo hacerlo. Búsqueda de "Custom ListView Android" y obtendrá un buen puñado.
Uno de ellos está aquí. http://techdroid.kbeanie.com/2009/07/custom-listview-for-android.html
Aquí está el adaptador de lista personalizada:
private class ListAdapter extends ArrayAdapter<RSSItem> { private List<Item> items; public ListAdapter(Context context, int textViewResourceId, List<Item> items) { super(context, textViewResourceId, items); this.items = items; } public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.list_item, null); } Item item = items.get(position); if (item != null) { TextView title = (TextView) v.findViewById(R.id.tvTitle); TextView description = (TextView) v.findViewById(R.id.tvDescription); if (title != null) { title.setText(item.getTitle()); } if (description != null) { description.setText(item.toString()); } } return v; } }
esta es una clase de Elemento , la bruja tendrá sus datos:
public class Item { private String title = null; private String description = null; RSSItem() { } public void setTitle(String title) { this.title = title; } public void setDescription(String description) { this.description = description; } public String getTitle() { return title; } public String getData() { return data; } }
… y aquí es una clase con la que puede tomar todos los datos de la lista en algún tipo de matriz:
public class ListData { private int itemcount = 0; private List<Item> itemlist; ListData () { itemlist = new Vector<Item>(); } int addItem(Item item) { itemlist.add(item); itemcount++; return itemcount; } Item getItem(int location) { return itemlist.get(location); } List<Item> getAllItems() { return itemlist; } int getItemCount() { return itemcount; } }
En su clase principal ( Actividad ) usted debe llenar correctamente sus datos.
Con el adaptador se alimenta el listview con los datos. Y cuando se alimenta en el método getView (), agrega datos a estas TextViews. Hay miles de ejemplos en la red …
Aquí hay un ejemplo (Mejoras en este código se puede hacer, por supuesto)
@Override public View getView(int position, View convertView, ViewGroup parent) throws NullPointerException { ViewHold viewHold; if (convertView == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = vi.inflate(R.layout.temp2, null); viewHold = new ViewHold(); viewHold.go = (Button)convertView.findViewById(R.id.gotherefav); viewHold.remove = (Button)convertView.findViewById(R.id.removefav); convertView.setTag(viewHold); } else { viewHold=(ViewHold)convertView.getTag(); } String t = items.get(position); if (t != null) { TextView itemText = (TextView) convertView.findViewById(R.id.item); // here you add data from arrayLists TextView itemText2 = (TextView) convertView.findViewById(R.id.item2); itemText2.setText(t); itemText.setText(t); itemText.invalidate(); } viewHold.go.setVisibility(View.GONE); viewHold.remove.setVisibility(View.GONE); return convertView; } }
- Cómo escalar mapas de bits en View.Canvas en Android?
- ¿Cuál es el método más rápido para realizar más de 64 combinaciones de tablas en SQlite?