如何在android的单个片段中隐藏回收器视图的视图(但在两个片段中使用相同的列表)

Posted

技术标签:

【中文标题】如何在android的单个片段中隐藏回收器视图的视图(但在两个片段中使用相同的列表)【英文标题】:How to hide a view of recycler view in a single fragment in android (But using same list in two fragments) 【发布时间】:2021-04-19 05:00:39 【问题描述】:

我在两个片段中使用回收器视图。

但其中一个片段不需要显示特定视图。但需要在另一个屏幕中显示所有视图。

如何在我的片段中单独隐藏该特定视图

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear"
    android:layout_
    android:layout_
    android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearlayout"
    android:layout_
    android:layout_
    android:orientation="horizontal"
    >
    <ImageView
        android:id="@+id/imageView"
        android:layout_
        android:layout_
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:background="@drawable/corner_radius"
        />
    <LinearLayout
        android:layout_
        android:layout_
        android:layout_marginTop="15dp"
        android:orientation="vertical">
        <TextView
            android:id="@+id/header"
            android:layout_
            android:layout_
            android:gravity="left"
            android:foregroundGravity="center_horizontal"
            android:layout_marginLeft="10dp"
            android:textColor="@color/white_new"
            android:textSize="20dp"/>
        <TextView
            android:layout_
            android:layout_
            android:gravity="left"
            android:foregroundGravity="center_horizontal"
            android:layout_marginLeft="10dp"
            android:textColor="@color/gray"
            android:textSize="18dp"/>

    </LinearLayout>
</LinearLayout>
    <View style="@style/Divider.Horizontal.Gray" android:id="@+id/divider"  android:layout_marginTop="10dp" android:layout_marginBottom="10dp"/>
</LinearLayout>

【问题讨论】:

使用活动范围内的视图模型,并根据当前显示的片段,采取所需的操作 你能提供任何样品吗 【参考方案1】:

为什么不为此或使用 if 条件

yourAdapter(isoneFramgent:Boolean)


如果从您的片段发送 true 和 false,如果它从第一个片段发送 true 并且从第二个片段发送 false 并添加一个 if 条件到 bindView 以根据片段显示和隐藏您的视图

【讨论】:

如何在一个片段中只显示两个项目,而在另一个片段中显示所有项目 在绑定视图中使用 this if (isoneFragment==true) //隐藏所有其他项目并仅显示两个else //此处显示AllItem 【参考方案2】:

在将其设置为adapter 之前过滤您的数据源,并将过滤后的数据传递给一个fragment,并将原始数据传递给另一个片段。

假设你有字符串列表

val originalData = listOf("data") //this is your raw list
//Fragment 1
  val f1Data = ArrayList(originalData.filter //filter one item )
  val f1Adapter = YourAdapter(f1Data)
//Fragment 2
  val f2Adapter = YourAdapter(originalData)

【讨论】:

我只需要隐藏视图。你能告诉我为什么过滤器需要在这里 .

以上是关于如何在android的单个片段中隐藏回收器视图的视图(但在两个片段中使用相同的列表)的主要内容,如果未能解决你的问题,请参考以下文章

android如何使用listview而不是scrollview

如何隐藏片段内的活动视图

片段设计:通过在单个 Activity 中显示/隐藏片段来适应多种屏幕布局?

如何在滚动列表视图上显示/隐藏底部导航视图?

在android中绘制视图时意外崩溃[关闭]

如何在回收站视图android中选择多个项目?