RecyclerView上的空视图

约翰·卡维斯

在我正在开发的应用程序中,我正在使用“回收站视图”显示项目列表。我希望列表为空时显示一些视图(例如,文本视图)。我知道使用ListViews可以调用setEmptyView,但是RecyclerView没有这种方法。

我尝试将视图的可见性设置为GONE,并在RecyclerView数据集为空时使其可见,但是将任何视图添加到定义了RecyclerView的布局文件中都会导致错误:

Attempt to invoke virtual method 'boolean 
android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null 
object reference

做我正在做的最好的方法是什么?

有关更多信息,RecyclerView被保存在一个Fragment中,并且布局在onCreateView函数中被放大。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_grocerylist, container, false);

    rv = view.findViewById(R.id.grocery_list);

    dh = new DatabaseHandler(view.getContext());

    dataset = dh.getGroceries();

    // Set the adapter
    if (view instanceof RecyclerView) {
        Context context = view.getContext();
        RecyclerView recyclerView = (RecyclerView) view;
        recyclerView.setLayoutManager(new LinearLayoutManager(context));

        adapter = new GroceryListRecyclerViewAdapter(dataset,mListener,this);
        recyclerView.setAdapter(adapter);
    }

    ItemTouchHelper.Callback callback = new SimpleTouchHelperCallback(adapter);
    ith = new ItemTouchHelper(callback);
    ith.attachToRecyclerView(rv);

    DividerItemDecoration div = new DividerItemDecoration(rv.getContext(),
            DividerItemDecoration.VERTICAL);

    rv.addItemDecoration(div);

    return view;
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/grocery_list" android:name="com.github.jlcarveth.grocer.layout.fragment.GroceryListFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
app:layoutManager="LinearLayoutManager"  tools:context="com.github.jlcarveth.grocer.layout.fragment.GroceryListFragment"   tools:listitem="@layout/grocery_item"/>
地狱战士

我更新了您的代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
android:name="com.github.jlcarveth.grocer.layout.fragment.GroceryListFragment"
android:layout_width="match_parent"
tools:context="com.github.jlcarveth.grocer.layout.fragment.GroceryListFragment"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/grocery_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="0dp"
    android:layout_marginRight="0dp"
    app:layoutManager="LinearLayoutManager"
    tools:listitem="@layout/grocery_item" />

<TextView
    android:id="@+id/empty_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:visibility="gone"
    android:text="NO DATA AVAILABLE" />
</FrameLayout>

您的片段:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


  View view = inflater.inflate(R.layout.fragment_grocerylist, container, false);

    rv = view.findViewById(R.id.grocery_list);
    TextView emptyView = (TextView)view.findViewById(R.id.empty_view);

    dh = new DatabaseHandler(view.getContext());

    dataset = dh.getGroceries();


     Context context = view.getContext();
     RecyclerView recyclerView = (RecyclerView) rv;
     recyclerView.setLayoutManager(new LinearLayoutManager(context));

     adapter = new GroceryListRecyclerViewAdapter(dataset,mListener,this);
     recyclerView.setAdapter(adapter);


    ItemTouchHelper.Callback callback = new SimpleTouchHelperCallback(adapter);
    ith = new ItemTouchHelper(callback);
    ith.attachToRecyclerView(recyclerView);

    DividerItemDecoration div = new DividerItemDecoration(recyclerView.getContext(),
            DividerItemDecoration.VERTICAL);

    recyclerView.addItemDecoration(div);


    if (dataset.isEmpty()){
        recyclerView.setVisibility(View.GONE);
         emptyView.setVisibility(View.VISIBLE);
    } else {
         recyclerView.setVisibility(View.VISIBLE);
         emptyView.setVisibility(View.GONE);
    }



    return view;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用RecyclerView显示空视图?

来自分类Dev

使RecyclerView后空视图占用剩余空间?

来自分类Dev

如果Recyclerview为空,则隐藏视图

来自分类Dev

无法在Recyclerview下面添加空视图

来自分类Dev

从RecyclerView上的notifyDataSetChanged删除占位符视图?

来自分类Java

getAdapterPosition recyclerview上的空对象引用

来自分类Dev

SwipeRefreshLayout隐藏在空的RecyclerView上

来自分类Dev

RecyclerView内CardView内的RecyclerView在findViewById上抛出空指针

来自分类Dev

如何处理 Firebase Adapter RecyclerView 空视图?

来自分类Dev

将视图拖放到RecyclerView项目Android上

来自分类Dev

如何检查特定RecyclerView项目上的视图是否可见?

来自分类Dev

仅当RealmResults为空时,如何为RecyclerView可靠地显示空视图

来自分类Dev

RecyclerView空

来自分类Dev

如果子项为空,则检查 Recyclerview 项上的 NullPointerException

来自分类Dev

为什么Eclipse Terminal视图在MAC上显示为空?

来自分类Dev

iPhone 7 / 7plus上的空快照视图

来自分类Dev

Recyclerview,我无法使用getChildAt(position)获得项目视图。空对象参考

来自分类Dev

从RecyclerView的视图中获取RecyclerView

来自分类Dev

在视图控制器屏幕上放置一个空的图像视图数组

来自分类Dev

RecyclerView 在“某些”设备上为空,但在我自己的设备上完美运行

来自分类Dev

Recyclerview:扩展文本视图

来自分类Dev

在Recyclerview之外的拖放视图

来自分类Dev

Recyclerview视图未填充

来自分类Dev

在RecyclerView中隐藏视图

来自分类Dev

RecyclerView中的多个视图

来自分类Dev

在recyclerview中交换视图

来自分类Dev

使视图沿RecyclerView滚动

来自分类Dev

RecyclerView 显示错误的视图

来自分类Dev

在工具栏中的任何事件上显示/隐藏 RecyclerView 中的视图

Related 相关文章

  1. 1

    如何使用RecyclerView显示空视图?

  2. 2

    使RecyclerView后空视图占用剩余空间?

  3. 3

    如果Recyclerview为空,则隐藏视图

  4. 4

    无法在Recyclerview下面添加空视图

  5. 5

    从RecyclerView上的notifyDataSetChanged删除占位符视图?

  6. 6

    getAdapterPosition recyclerview上的空对象引用

  7. 7

    SwipeRefreshLayout隐藏在空的RecyclerView上

  8. 8

    RecyclerView内CardView内的RecyclerView在findViewById上抛出空指针

  9. 9

    如何处理 Firebase Adapter RecyclerView 空视图?

  10. 10

    将视图拖放到RecyclerView项目Android上

  11. 11

    如何检查特定RecyclerView项目上的视图是否可见?

  12. 12

    仅当RealmResults为空时,如何为RecyclerView可靠地显示空视图

  13. 13

    RecyclerView空

  14. 14

    如果子项为空,则检查 Recyclerview 项上的 NullPointerException

  15. 15

    为什么Eclipse Terminal视图在MAC上显示为空?

  16. 16

    iPhone 7 / 7plus上的空快照视图

  17. 17

    Recyclerview,我无法使用getChildAt(position)获得项目视图。空对象参考

  18. 18

    从RecyclerView的视图中获取RecyclerView

  19. 19

    在视图控制器屏幕上放置一个空的图像视图数组

  20. 20

    RecyclerView 在“某些”设备上为空,但在我自己的设备上完美运行

  21. 21

    Recyclerview:扩展文本视图

  22. 22

    在Recyclerview之外的拖放视图

  23. 23

    Recyclerview视图未填充

  24. 24

    在RecyclerView中隐藏视图

  25. 25

    RecyclerView中的多个视图

  26. 26

    在recyclerview中交换视图

  27. 27

    使视图沿RecyclerView滚动

  28. 28

    RecyclerView 显示错误的视图

  29. 29

    在工具栏中的任何事件上显示/隐藏 RecyclerView 中的视图

热门标签

归档