Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何扩展用于显示列表的RecyclerView适配器<;对象>;包含列表的n个元素<;嵌套对象>;包含n个元素和其他数据_Android_Android Recyclerview - Fatal编程技术网

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);
}