Я использую вложенный массив ArrayList для Tablayout. Каждый элемент ArrayList заполняет каждую Tab. Количество вкладок изменяется в зависимости от размера родительского массива. Например, если родительский размер ArrayList 2, количество вкладок 2; когда размер 3 вкладки счет 3..etc..Для объяснения этой ситуации сложно, я подготовил изображение экспатриантов.
Изображение 1
Это изображение представляет собой общий вид. Я хочу, чтобы этот TextViews заполнил ArrayLists каждый элемент
Изображение 2
Это изображение представляет собой мой тип данных; ключи и значения ArrayList является вложенным arraylist, и они содержат arraylist в каждом индексе.
Изображение 3 - Изображение 4 - Изображение 5
Эти изображения представляют, как были использованы tabLayouts. Я хочу, чтобы мои данные выглядели как эти изображения.
Таким образом, проблема заключается в классе PopUpDetailsAdapterPlanT;
Когда я использую коды, расположенные ниже каждой строки, заполняются одним и тем же элементом. В этом примере каждая строка записывает последний элемент ArrayList (Местоположение - Миннесота). Как я могу справиться с этой проблемой. Спасибо за помощь
public class PopUpDetailsAdapterPlanT extends ArrayAdapter {
Context context;
private ArrayList<ArrayList<Object>> keys;
private ArrayList<ArrayList<String>> values;
public PopUpDetailsAdapterPlanT(Context context, ArrayList<ArrayList<Object>> keys, ArrayList<ArrayList<String>> values) {
super(context,R.layout.popupdetails_listview_simpleitem);
this.keys = keys;
this.values = values;
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.popupdetails_listview_simpleitem, null);
}
TextView tv1 = (TextView) v.findViewById(R.id.hashmapKeys);
TextView tv2 = (TextView) v.findViewById(R.id.hashmapValues);
for (int i = 0; i < keys.size(); i++) {
ArrayList<Object> mKeys = new ArrayList<>(keys.get(i));
ArrayList<String> mValues = new ArrayList<>(values.get(i));
for (int j = 0; j <mKeys.size() ; j++) {
tv1.setText(String.valueOf(mKeys.get(j)));
tv2.setText(String.valueOf(mValues.get(j)));
}
}
return v;
}
@Override
public int getCount() {
return keys.get(0).size();
}
@Override
public Object getItem(int position) {
if (position >= keys.size())
return values.get(position);
return keys.get(position);
}
}