Android: несколько массивов в пользовательском ArrayAdapter

#android #listview #android-arrayadapter #listadapter

#Android #listview #android-arrayadapter #listadapter

Вопрос:

Я хотел бы передать несколько массивов для моего пользовательского ArrayAdapter. Вот мои массивы и то, что я хочу сделать:

 String[] names = new String[]{ "One", "two", "three" };

String[] texts = new String[]{ "Bacon", "Eggs", "Cheese" };

Customadapter ap = new Customadapter(this, names, texts);
setListAdapter(ap);
  

и вот мой пользовательский ArrayAdapter:

 public class Customadapter extends ArrayAdapter<String> {

    private final Activity context;
    private final String[] names;

    public Customadapter(Activity context, String[] names) {
        super(context, R.layout.row, names);
        this.context = context;
        this.names = names;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.row, null, true);
        TextView tw1 = (TextView) rowView.findViewById(R.id.label);
        TextView tw2 = (TextView) rowView.findViewById(R.id.label2);

        String text = names[position];
        tw2.setText(text);

        return rowView;

    }

}
  

Ответ №1:

Вместо того, чтобы иметь ArrayAdapter<Strings> , вам нужно создать адаптер ArrayAdapter<HashMap<String,String>>

Ответ №2:

Попробуйте вместо этого использовать SimpleAdapter.

Ответ №3:

для начала расширьте BaseAdapter вместо ArrayAdapter, затем адаптируйте конструктор так, чтобы он также принимал текстовую строку, чтобы вы могли сохранить ее в адаптере. В основном это должно сработать. Есть некоторые методы, требующие переопределения afaik, но они есть в документах.