Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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中动态添加和删除不同的视图持有者(比如2个视图持有者)?_Android_Android Recyclerview_Android Viewholder - Fatal编程技术网

如何在android中动态添加和删除不同的视图持有者(比如2个视图持有者)?

如何在android中动态添加和删除不同的视图持有者(比如2个视图持有者)?,android,android-recyclerview,android-viewholder,Android,Android Recyclerview,Android Viewholder,我正在尝试使用recycler视图创建时间线。我需要在运行时动态添加和删除两种不同类型的viewholder(注意:不是数据“viewholder!”)。 每个viewholder代表一组不同的数据和布局。 帮我解决这个问题。一个解决办法是将两个(所有)较小的项目添加到一个项目中,就像这样 <OuterLayout android:style="@style/yourStyle"> <InnerLayout android:style="@sty

我正在尝试使用recycler视图创建时间线。我需要在运行时动态添加和删除两种不同类型的viewholder(注意:不是数据“viewholder!”)。 每个viewholder代表一组不同的数据和布局。
帮我解决这个问题。

一个解决办法是将两个(所有)较小的项目添加到一个项目中,就像这样

<OuterLayout
    android:style="@style/yourStyle">
    <InnerLayout
        android:style="@style/innerStyle1"
        ...interior elements i.e. text views/buttons/>
    <InnerLayout2
        android:style="@style/innerStyle2"
        ...interior elements i.e. text views/buttons/>
</OuterLayout>

您需要从适配器执行的所有操作就是在不需要的适配器上调用minimize。您还需要一个相应的expand()函数,因为RecyclerView是如何回收视图的。您可能需要更改上面的功能以适应您的布局。

视图持有者只是屏幕上数据位置的表示,您希望如何隐藏它而不是从列表中删除数据?我相信还有很多其他方法可以做到这一点,但这似乎是最有效的方法。很高兴它对你有用!
public static void minimize(LinearLayout layout){
    LinearLayout.LayoutParams size = new LinearLayout.LayoutParams(0,0);
    layout.setLayoutParams(size);
}