多个 RecyclerView 不在同一个片段中工作
Posted
技术标签:
【中文标题】多个 RecyclerView 不在同一个片段中工作【英文标题】:Multiple RecyclerView not working in same Fragment 【发布时间】:2017-06-19 02:14:04 【问题描述】:我的Fragment
中有两个RecyclerView
。
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:background="#E6E6E6">
<RelativeLayout
android:layout_
android:layout_ >
<TextView
android:id="@+id/textview"
android:layout_
android:layout_
android:textSize="20sp"
android:textColor="#000"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:gravity="left"
android:text="Trending"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_
android:layout_
android:scrollbars="none"
android:layout_below="@+id/textview"
/>
<TextView
android:id="@+id/popular_textview"
android:layout_
android:layout_
android:textSize="20sp"
android:textColor="#000"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:gravity="left"
android:text="Popular"
android:layout_below="@+id/recycler_view"
android:layout_marginTop="200dip"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/popular_recycler_view"
android:layout_
android:layout_
android:scrollbars="none"
android:layout_below="@+id/popular_textview"/>
</RelativeLayout>
但这只是第一个 RecyclerView
工作。第二个是不可见的。
我的Fragment
代码是这样的:
private void populatRecyclerView(ArrayList<HashMap<String, String>> imageList)
ArrayList<Data_Model> arrayList = new ArrayList<>();
for (int i = 0; i < imageList.size(); i++)
HashMap<String, String> vector = imageList.get(i);
category = vector.get("deal_category");
if (category.equalsIgnoreCase("17"))
String imageurl = vector.get("deal_thumbnail");
String title = vector.get("title");
Uri uri = Uri.parse(imageurl);
String filename = uri.getLastPathSegment();
arrayList.add(new Data_Model(title, filename));
RecyclerView_Adapter adapter = new RecyclerView_Adapter(getActivity(), arrayList);
recyclerView.setAdapter(adapter);// first set adapter on recyclerview
adapter.notifyDataSetChanged();// Notify the adapter
else
String imageurl = vector.get("deal_thumbnail");
String title = vector.get("title");
Uri uri = Uri.parse(imageurl);
String filename = uri.getLastPathSegment();
arrayList.add(new Data_Model(title, filename));
RecyclerView_Popular_Adapter popular_adapter = new RecyclerView_Popular_Adapter(getActivity(), arrayList);
popular_recyclerView.setAdapter(popular_adapter);// second set adapter on recyclerview
popular_adapter.notifyDataSetChanged();// Notify the adapter
甚至第二个TextView
也没有出现。我在评论中指定了第一个和第二个适配器。那么如何让第二个RecyclerView
也可见呢?
【问题讨论】:
由于您已指定条件,因此在单个实例中只有一个可见(这意味着您的 if(true) 始终) 在某些情况下它会进入 else 循环。我已经交叉检查了那个。 尝试修复 Recyclerview 的高度。如果您有条件地填充 recyclerview 为什么需要其中两个? 第一个是自动滚动条,第二个不是自动滚动条。所以我需要两个不同的回收视图 【参考方案1】:您不能在 RelativeLayout
的子代上使用 layout_weight
。您的父视图应位于LinearLayout
下,如下所示;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical">
<RelativeLayout
android:layout_
android:layout_
android:layout_weight="1">
<TextView
android:id="@+id/textview"
android:layout_
android:layout_
android:gravity="left"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:text="Trending"
android:textColor="#000"
android:textSize="20sp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_
android:layout_
android:layout_below="@+id/textview"
android:scrollbars="none" />
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_
android:layout_weight="1">
<TextView
android:id="@+id/popular_textview"
android:layout_
android:layout_
android:gravity="left"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:text="Popular"
android:textColor="#000"
android:textSize="20sp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/popular_recycler_view"
android:layout_
android:layout_
android:layout_below="@+id/popular_textview"
android:scrollbars="none" />
</RelativeLayout>
</LinearLayout>
希望对你有帮助!
【讨论】:
是的,我尝试删除 layout_weight 仍然无法正常工作。 这还不够,您应该按组分隔您的 RecylerViews 并为此组父级设置 layout_weight。 我现在面临的另一个问题。此视图不可滚动。我尝试使用以上是关于多个 RecyclerView 不在同一个片段中工作的主要内容,如果未能解决你的问题,请参考以下文章
如何从 recyclerview 片段传递到另一个 recyclerview 片段
我无法从另一个带有 recyclerview.adaper 的片段中打开带有 recyclerview.adapter 的片段