Android 如何扩展用于显示列表的RecyclerView适配器<;对象>;包含列表的n个元素<;嵌套对象>;包含n个元素和其他数据
我有一个带有对象的模型。类包含Android 如何扩展用于显示列表的RecyclerView适配器<;对象>;包含列表的n个元素<;嵌套对象>;包含n个元素和其他数据,android,android-recyclerview,Android,Android Recyclerview,我有一个带有对象的模型。类包含列表和n个元素,它自己的错误对象: public class Object { List<NestedObject> nestedObjects; Fault fault; } 这是我的嵌套对象dapter.class,它仅适用于列表的单个对象: 它仅适用于列表中的1个元素。如何将此代码扩展为List的n个元素列表?如果我理解正确,您可以创建临时列表并将所有嵌套对象添加到其中。以下是设置适配器的示例: List<NestedO
列表
和n个元素,它自己的错误
对象:
public class Object {
List<NestedObject> nestedObjects;
Fault fault;
}
这是我的嵌套对象dapter.class,它仅适用于列表的单个对象:
它仅适用于列表中的1个元素。如何将此代码扩展为List
的n个元素列表?如果我理解正确,您可以创建临时列表并将所有嵌套对象添加到其中。以下是设置适配器的示例:
List<NestedObject> tempNestedObjects = new ArrayList<>();
for (int i = 0; i < getObjectsList().size(); i++) {
tempNestedObjects.addAll(getObjectsList().get(i).getNestedObjects());
}
NestedObjectsAdapter nestedObjectsAdapter = new NestedObjectsAdapter(getApplicationContext(), tempNestedObjects);
recyclerView.setAdapter(nestedObjectsAdapter);
此对象列表如下所示
[2, some value 1], [7, some value 2], [8, some value 3]
List<NestedObject> tempNestedObjects = new ArrayList<>();
LinkedHashMap<Integer, Fault> linkedHashMap = new LinkedHashMap<>();
for (int i = 0; i < getObjectsList().size(); i++) {
tempNestedObjects.addAll(getObjectsList().get(i).getNestedObjects());
linkedHashMap.put(tempNestedObjects.size() - 1, getObjectsList().get(i).getFault());
}
NestedObjectsAdapter nestedObjectsAdapter = new NestedObjectsAdapter(getApplicationContext(), tempNestedObjects, linkedHashMap);
recyclerView.setAdapter(nestedObjectsAdapter);
因此,设置适配器将如下所示
[2, some value 1], [7, some value 2], [8, some value 3]
List<NestedObject> tempNestedObjects = new ArrayList<>();
LinkedHashMap<Integer, Fault> linkedHashMap = new LinkedHashMap<>();
for (int i = 0; i < getObjectsList().size(); i++) {
tempNestedObjects.addAll(getObjectsList().get(i).getNestedObjects());
linkedHashMap.put(tempNestedObjects.size() - 1, getObjectsList().get(i).getFault());
}
NestedObjectsAdapter nestedObjectsAdapter = new NestedObjectsAdapter(getApplicationContext(), tempNestedObjects, linkedHashMap);
recyclerView.setAdapter(nestedObjectsAdapter);
适配器不能只包含嵌套对象,父对象有一些数据,我不能放弃它们。如果Object.class中没有更多的数据(除了列表),这似乎是个好方法。我不是100%确定,但应该是LinkedHashMap而不是LinkedHashMap,但这是个好方法。
[2, some value 1], [7, some value 2], [8, some value 3]
List<NestedObject> tempNestedObjects = new ArrayList<>();
LinkedHashMap<Integer, Fault> linkedHashMap = new LinkedHashMap<>();
for (int i = 0; i < getObjectsList().size(); i++) {
tempNestedObjects.addAll(getObjectsList().get(i).getNestedObjects());
linkedHashMap.put(tempNestedObjects.size() - 1, getObjectsList().get(i).getFault());
}
NestedObjectsAdapter nestedObjectsAdapter = new NestedObjectsAdapter(getApplicationContext(), tempNestedObjects, linkedHashMap);
recyclerView.setAdapter(nestedObjectsAdapter);
private LinkedHashMap<Integer, Fault> linkedHashMap;
.
.
.
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String someString= nestedObjectsList.get(position).getSomeString();
Double someInt = nestedObjectsList.get(position).getSomeInt();
Fault fault;
linkedHashMap.forEach((key, value) -> {
if (key >= position) {
fault = value;
}
});
holder.someStringTextView.setText(someString);
holder.someIntTextView.setText(someInt);
holder.someViewThatNeedsFaultValue.setSomething(fault);
}
public class NestedObject {
String someString;
int someInt;
Fault fault;
...
}
List<NestedObject> tempNestedObjects = new ArrayList<>();
for (int i = 0; i < getObjectsList().size(); i++) {
Object object = getObjectsList().get(i);
for (int j = 0; j < object.getNestedObjects().size(); j++) {
NestedObject nestedObject = object.getNestedObjects().get(j);
nestedObject.setFault(object.getFault());
tempNestedObjects.add(nestedObject);
}
}
NestedObjectsAdapter nestedObjectsAdapter = new NestedObjectsAdapter(getApplicationContext(), tempNestedObjects);
recyclerView.setAdapter(nestedObjectsAdapter);
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String someString= nestedObjectsList.get(position).getSomeString();
Double someInt = nestedObjectsList.get(position).getSomeInt();
Fault fault = nestedObjectsList.get(position).getFault();
holder.someStringTextView.setText(someString);
holder.someIntTextView.setText(someInt);
holder.someViewThatNeedsFaultValue.setSomething(fault);
}