用于 RecyclerView 的空视图

1.在string.xml中添加下列语句

没有记录可以显示

2.修改fragment_crime_list.xml中的代码



    
    

3.在 CrimeListFragment 中引用该 TextView,并设置和添加 Crime 菜单选项相同的 ClickListener 的内容。

public class CrimeListFragment extends Fragment {
    private TextView mTextView;
    ....
    private class CrimeHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        private TextView mTextView;
        public CrimeHolder(View itemView){
            super(itemView);
            itemView.setOnClickListener(this);
            mTitleTextView=(TextView)itemView.findViewById(R.id.list_item_crime_title_text_view);
            mDateTextView=(TextView)itemView.findViewById(R.id.list_item_crime_date_text_view);
            mSolvedCheckBox=(CheckBox)itemView.findViewById(R.id.list_item_crime_solved_check_box);
            mDeleteButton=(Button)itemView.findViewById(R.id.list_item_crime_delete_button);
            mTextView=(TextView)itemView.findViewById(R.id.crime_set_empty_text_view);
        }
    }
}

4.在 updateUI() 方法中,获取到数据集时,判断一下数据集的长度,如果大于零, 隐藏这个 TextView,然后执行之前一系列显示的操作;如果为零,就隐藏 RecyclerView,显示该 TextView。

public void updateUI(){
        CrimeLab crimeLab=CrimeLab.get(getActivity());
        List crimes=crimeLab.getCrimes();
        if(crimes.size()!=0){
            mTextView.setVisibility(View.GONE);
            if (mAdapter==null) {
                mAdapter = new CrimeAdapter(crimes);
                mCrimeRecyclerView.setAdapter(mAdapter);
            }else{
                mAdapter.setCrimes(crimes);
                mAdapter.notifyDataSetChanged();
            }
        }else{
            mCrimeRecyclerView.setVisibility(View.GONE);
            mTextView.setVisibility(View.VISIBLE);
        }
        updateSubtitle();
    }

INVISIBLE和GONE的主要区别是:当控件visibility属性为INVISIBLE时,界面保留了view控件所占有的空间;而控件属性为GONE时,界面则不保留view控件所占有的空间。

用于 RecyclerView 的空视图_第1张图片
1.png
用于 RecyclerView 的空视图_第2张图片
2.png

你可能感兴趣的:(用于 RecyclerView 的空视图)