Rellenar listview de arraylist de objetos

Tengo una listactivity que mostrará una lista de personas nombre y dirección con datos de arraylist de objetos. aquí está el método para llenar el listview hasta ahora ..

private void fillData(ArrayList<Person> messages) { //populating list should go here } 

La clase persona es el nombre de las tiendas y la dirección de una persona.

 public class Person { String name; String address; } 

Mientras que mi listitem para mi listview consiste en dos textview, como esto:

 <TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:mode="twoLine" android:clickable="false" android:paddingBottom="9dp" android:paddingTop="5dp" > <TextView android:id="@+id/display_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/display_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/display_name" android:layout_below="@+id/display_name" android:textAppearance="?android:attr/textAppearanceSmall" /> 

Quiero que cada elemento de mi listview muestre el nombre y la dirección de cada persona. ¿Puede alguien ayudarme por favor?

Gracias de antemano, y lo siento por mi mal inglés …

En tu actividad

 AdapterPerson adbPerson; ArrayList<Person> myListItems = new ArrayList<Person>(); //then populate myListItems adbPerson= new AdapterPerson (youractivity.this, 0, myListItems); listview.setAdapter(adbPerson); 

Adaptador

 public class AdapterPerson extends ArrayAdapter<Person> { private Activity activity; private ArrayList<Person> lPerson; private static LayoutInflater inflater = null; public AdapterPerson (Activity activity, int textViewResourceId,ArrayList<Person> _lPerson) { super(activity, textViewResourceId, _lProducts); try { this.activity = activity; this.lPerson = _lPerson; inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } catch (Exception e) { } } public int getCount() { return lPerson.size(); } public Product getItem(Product position) { return position; } public long getItemId(int position) { return position; } public static class ViewHolder { public TextView display_name; public TextView display_number; } public View getView(int position, View convertView, ViewGroup parent) { View vi = convertView; final ViewHolder holder; try { if (convertView == null) { vi = inflater.inflate(R.layout.yourlayout, null); holder = new ViewHolder(); holder.display_name = (TextView) vi.findViewById(R.id.display_name); holder.display_number = (TextView) vi.findViewById(R.id.display_number); vi.setTag(holder); } else { holder = (ViewHolder) vi.getTag(); } holder.display_name.setText(lProducts.get(position).name); holder.display_number.setText(lProducts.get(position).number); } catch (Exception e) { } return vi; } } 

Esta es mi solución al problema del adaptador de lista personalizada. Primero un arrayadadter personalizado:

 public class MemoListAdapter extends ArrayAdapter<MemoEntry> { private int layoutResourceId; private static final String LOG_TAG = "MemoListAdapter"; public MemoListAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); layoutResourceId = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { try { MemoEntry item = getItem(position); View v = null; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(layoutResourceId, null); } else { v = convertView; } TextView header = (TextView) v.findViewById(R.id.list_memo_item_header); TextView description = (TextView) v.findViewById(R.id.list_memo_item_text); header.setText(item.getHeader()); description.setText(item.getValue()); return v; } catch (Exception ex) { Log.e(LOG_TAG, "error", ex); return null; } } 

}

y en el método onCreate de la actividad:

 adapter = new MemoListAdapter(this, R.layout.list_memo_item_layout); // the adapter is a member field in the activity setContentView(R.layout.activity_view_memo_layout); ListView lv = (ListView) findViewById(R.id.view_memo_memo_list); lv.setAdapter(adapter); 

y entonces yo lleno el adaptador después de alguna búsqueda con una llamada como esto:

 ArrayList<MemoEntry> memoList = new ArrayList<MemoEntry>(); //here you should use a list with some content in it adapter.addAll(memoList); 

Así que para adaptar esto a su solución, cree su propio customadapter, y en lugar de mi objeto MemoEntry, utilice su clase Person. En el método getView, cámbielo para que se adapte a sus necesidades. Es casi lo mismo que lo que estoy haciendo, así que no debería ser demasiado difícil.

Espero que esto te ayude un poco!

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.