Заполнение списка с использованием адаптера с указанным одним или двумя списками ArrayLists
У меня есть представление списка в Activity, которую я заполняю с помощью адаптера с данным ArrayList. В этом классе Elements хранятся переменные. Так что в этом ListView у меня есть категории, подкатегории и элементы. В некоторых случаях есть только элементы, в других только категории, в других категориях и элементах одновременно. Категории должны быть элементом, при нажатии на который нужно перейти к другой активности, а элементом - простым элементом, отображающим информацию.
В случае наличия подкатегорий и элементов я создаю совершенно новый ArrayList, добавляя в него ArrayList и ArrayList, который затем имеет 2 подмассива. В данный момент конструктор моего адаптера выглядит так
public class AchivsListAdapter extends ArrayAdapter<Elements> {
ArrayList<Elements> eItems;
ArrayList<Categories> cItems;
LayoutInflater inflater;
public AchivsListAdapter(Context context, int resource, ArrayList<Elements> ee) {
super(context, resource, ee);
this.eItems = ee;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
Как я могу заставить адаптер работать со всеми приведенными случаями?
1 ответ
Если категории и элементы являются похожими объектами, я бы отредактировал класс Element и дал бы ему логический атрибут isCategory, чтобы вы могли иметь один ArrayList элементов, а в адаптере проверил, содержит ли текущая позиция категорию или элемент, и установите onClickListener для второго.