删除所有项目后刷新RecyclerView

时间:2019-10-13 08:53:00

标签: java android android-recyclerview

我有一个RecyclerView,其中显示了一个项目列表。

  

如果没有要显示的项目,则recyclerview显示一个项目,其中有一个   具体视图(告诉用户没有项目,而是白色   屏幕)。

HistoryFragment 内:

private void initRecyclerView(Boolean isNoResult){
        HistoryRecyclerViewAdapter adapter = new HistoryRecyclerViewAdapter(mContext, mRecords, **isNoResult**);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext));
        mRecyclerView.setAdapter(adapter);
}

在HistoryRecyclerViewAdapter内:

@NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view;

        if(**isEmpty**) {
            **view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem_prhistory_empty, parent, false);**
        } else {
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem_prhistory, parent, false);
        }

        ViewHolder holder = new ViewHolder(view);
        return holder;
}

因此,如果我们单击它们,则可以一一删除。

当dataSet为null时,我想将isEmpty设置为true并刷新RecyclerView

我已经知道在哪里调用该方法,但是我真的不知道该怎么做? (即,用RecyclerView刷新isEmpty = true,以便显示可以向用户说明不再有记录的单元格。)

3 个答案:

答案 0 :(得分:0)

不要给不同的视图持有人充气,因为当适配器没有任何物品时,其中的任何一个都不会被充气。相反,可以将import CookieConsent from "react-cookie-consent"; <CookieConsent enableDeclineButton onAccept={() => {alert("yay!")}} onDecline={() => {alert("nay!")}} > This website uses cookies to enhance the user experience. </CookieConsent> 和“无数据” RecyclerView一起包装到Fragment中,然后在ViewFlipper时将其切换到Fragment适配器没有任何物品。

答案 1 :(得分:0)

最佳做法是在RecyclerView之外使用空视图,但如果您想做自己想做的事情:

1.in onCreateViewHolder仅会膨胀一种具有空视图和项目视图的布局

  1. 关于项目删除,检查您的数组是否为空,然后添加一个空项目 然后在onBindViewHolder中检查模型是否为Null可见的空视图,否则显示项目视图

摘要:

onBind:

模型为空:空视图可见

模型不为空:项目视图可见

答案 2 :(得分:0)

在删除此类内容后,使用界面刷新RecyclerView

public interface RefreshRecyclerView {

    public void Refresh();
}

然后在活动或片段中实现接口

Fragment implements RefreshRecyclerView

您将拥有这样的覆盖方法

 @Override
    public void Refresh() {
       // set adapter again here 
    }

然后将接口传递给适配器

RefreshRecyclerView refresh = (RefreshRecyclerView) this;

yourRecycler.setadapter(refresh);

最后,当用户单击适配器时,使用此

refresh. Refresh();