#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, но они есть в документах.