У меня есть List<CopyModel> copyData
со всеми моими данными, которые я хочу отобразить.
Класс CopyModel выглядит следующим образом:
public class CopyModel {
public String autoId;
public List<String> fieldNames;
public List<Object> values;
}
Я хочу отобразить элементы fieldNames
и values
.
Точные данные, которые я получаю из FireStore :
Я отображаю их в ListView, с simple_list_item_2
.
Вот код:
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
ArrayAdapter adapter = new ArrayAdapter(mContext, android.R.layout.simple_list_item_2, android.R.id.text1, copyData) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView t1 = view.findViewById(android.R.id.text1);
TextView t2 = view.findViewById(android.R.id.text2);
String tS1 = copyData.get(position).fieldNames.get(position);
t1.setText(tS1);
String tS2 = String.valueOf(copyData.get(position).values.get(position));
t2.setText(tS2);
return view;
}
};
holder.copyList.setAdapter(adapter);
}
Текущее поведение : RecyclerView показывает 3 ListViews с:
- copyData0.fieldNames0 => "default"
- copyData0.values0 => "false"
- copyData1.fieldNames1 => "Pont"
- copyData1.fieldNames1 => "9"
- copyData1.fieldNames1 => "entity_name"
- copyData1.fieldNames1 => "Analízis pontok"
Как яхотите, чтобы он работал :
RecyclerView будет отображать столько списков, сколько размер copyData
(в данном случае 3), и каждый ListView будет иметьстолько строк, сколько его размер fieldNames
(сейчас это 5, но можетбыть любым другим)
РЕДАКТИРОВАТЬ:
String tS1 = copyData.get(holder.getAdapterPosition()).fieldNames.get(position);
t1.setText(tS1);
String tS2 = String.valueOf(copyData.get(holder.getAdapterPosition()).values.get(position));
t2.setText(tS2);
Теперь я получаю 3 отдельных объекта, в 3 отдельных просмотра списка, но только первые 3 значения из fieldNames
и values
РЕДАКТИРОВАТЬ # 2 :
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
for (int i = 0;i<copyData.size();i++) {
final List<String> names = copyData.get(i).fieldNames;
final List<Object> values = copyData.get(i).values;
//noinspection unchecked
final ArrayAdapter adapter = new ArrayAdapter(mContext, android.R.layout.simple_list_item_2, android.R.id.text1, names) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView t1 = view.findViewById(android.R.id.text1);
TextView t2 = view.findViewById(android.R.id.text2);
String tS1 = names.get(position);
t1.setText(tS1);
String tS2 = String.valueOf(values.get(position));
t2.setText(tS2);
return view;
}
};
holder.copyList.setAdapter(adapter);
}
}
Таким образом, я могу добавить каждую пару имя-поле-поле в список, но она ведет себя как,он проходит эти 2 строки
final List<String> names = copyData.get(i).fieldNames;
final List<Object> values = copyData.get(i).values;
3 раза, а затем отображает все пары имя-поле-значение последнего объекта в 3 отдельных ListViews