Equivalent of ListView.setEmptyView in RecyclerView

前端 未结 13 1676
孤街浪徒
孤街浪徒 2020-11-30 17:44

In RecyclerView, I want to set an empty view to be shown when the adapter is empty. Is there an equivalent of ListView.setEmptyView()?

13条回答
  •  一生所求
    2020-11-30 18:13

    I have fixed this:
    Created layout layout_recyclerview_with_emptytext.xml file.
    Created EmptyViewRecyclerView.java
    ---------

    EmptyViewRecyclerView emptyRecyclerView = (EmptyViewRecyclerView) findViewById(R.id.emptyRecyclerViewLayout);
    emptyRecyclerView.addAdapter(mPrayerCollectionRecyclerViewAdapter, "There is no prayer for selected category.");

    layout_recyclerview_with_emptytext.xml file

        
        
    
    
    
    
    
        
    


    EmptyViewRecyclerView.java

    public class EmptyViewRecyclerView extends ViewSwitcher {
    private RecyclerView mRecyclerView;
    private CustomFontTextView mRecyclerViewExptyTextView;
    
    public EmptyViewRecyclerView(Context context) {
        super(context);
        initView(context);
    }
    
    public EmptyViewRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }
    
    
    private void initView(Context context) {
        LayoutInflater.from(context).inflate(R.layout.layout_recyclerview_with_emptytext, this, true);
        mRecyclerViewExptyTextView = (CustomFontTextView) findViewById(R.id.recyclerViewEmptyTextView);
        mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
    }
    
    public void addAdapter(final RecyclerView.Adapter adapter) {
        mRecyclerView.setAdapter(adapter);
        adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
            @Override
            public void onChanged() {
                super.onChanged();
                if(adapter.getItemCount() > 0) {
                    if (R.id.recyclerView == getNextView().getId()) {
                        showNext();
                    }
                } else {
                    if (R.id.recyclerViewEmptyTextView == getNextView().getId()) {
                        showNext();
                    }
                }
            }
        });
    }
    
    public void addAdapter(final RecyclerView.Adapter adapter, String emptyTextMsg) {
        addAdapter(adapter);
        setEmptyText(emptyTextMsg);
    }
    
    public RecyclerView getRecyclerView() {
        return mRecyclerView;
    }
    
    public void setEmptyText(String emptyTextMsg) {
        mRecyclerViewExptyTextView.setText(emptyTextMsg);
    }
    
    }
    

提交回复
热议问题