Soru Nesnelerin arraylist list list


Ben nesnelerin arraylist gelen verileri ile kişilerin isim ve adres listesini gösteren bir listactivity var. işte listeyi şu ana kadar doldurma yöntemi.

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

Kişi sınıfı bir kişinin adını ve adresini depolar.

public class Person {
   String name;
   String address;
}

Liste listemdeki liste listem şu iki metin görünümünden oluşuyor:

<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" />

Liste öğemdeki her öğenin, her kişinin adını ve adresini görüntülemesini istiyorum. Biri yardım edebilir mi?

Şimdiden teşekkürler ve kötü ingilizcem için özür dilerim ...


21
2018-03-08 15:46


Menşei


Google özel liste görünümünde ara ... - Pragnani
Kullanabilirsiniz onCreate yöntem. Bu durumda, programda kullanılabilir. - user7275835


Cevaplar:


Etkinliğinizde

AdapterPerson adbPerson;
ArrayList<Person> myListItems  = new ArrayList<Person>();

//then populate myListItems  

adbPerson= new AdapterPerson (youractivity.this, 0, myListItems);
listview.setAdapter(adbPerson);

adaptör

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;
    }
}

27
2018-03-08 15:55



Bu arada, AdapterPerson'ın 2. parametresi neden 0? - djargonforce


Bu, özel liste bağdaştırıcısı sorununa çözümümdür. İlk önce özel bir arrayadapter:

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;
    }
}

}

ve etkinliğin onCreate yönteminde:

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);

ve sonra böyle bir çağrı ile bazı getirme sonra bağdaştırıcıyı doldurun:

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

Bunu sizin çözümünüze uyarlamak için kendi customadapter'inizi oluşturun ve MemoEntry nesnesinin yerine, Kişisel sınıfınızı kullanın. GetView yönteminde, ihtiyaçlarınıza uyacak şekilde değiştirin. Yaptığım şeyle aynı şey bu yüzden çok zor olmamalı.

Umarım bu size biraz yardımcı olur!


2
2018-03-08 16:13