首页 > 代码库 > 安卓权威编程 挑战练习 13.8 用于RecyclerView的空视图

安卓权威编程 挑战练习 13.8 用于RecyclerView的空视图

当前,CriminalIntent应用启动后,会显示一个空白列表。从用户体验上来讲,即使crime列表
是空的,也应展示提示或解释类信息。
请设置空视图展示类似“没有crime记录可以显示”的信息。再添加一个按钮,方便用户直
接创建新的crime记录。
判断crime列表是否包含数据,然后使用任何类都有的 setVisibility 方法控制占位视图的
显示。

首先修改fragment_crime_list视图,增加一个TextView和一个Button控件:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/crime_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

<TextView
    android:id="@+id/crime_set_empty_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textSize="20sp"
    android:text="没有数据显示"/>
<Button
    android:id="@+id/click"
    android:gravity="center"
    android:text="Create New Crime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</RelativeLayout>

然后在CrimeListFragment中设置TextView 和 Button 的全局变量

private TextView mTextView;

    private Button mClick;

之后在onCreateView()方法中对这两个变量进行初始化,并对Button 设置点击事件,这里的点击事件和Menu菜单项的点击事件相同

 1 mTextView = (TextView)view.findViewById(R.id.crime_set_empty_text_view);
 2         mClick = (Button)view.findViewById(R.id.click);
 3         mClick.setOnClickListener(new View.OnClickListener() {
 4             @Override
 5             public void onClick(View v) {
 6                 Crime crime = new Crime();
 7                 CrimeLab.get(getActivity()).addCrime(crime);
 8                 Intent intent = CrimePagerActivity.newIntent(getActivity(),crime.getId());
 9                 startActivity(intent);
10             }
11         });

之后在updateUI()方法中添加如下代码

1 if(crimes.size() > 0){
2             mTextView.setVisibility(View.GONE);
3             mClick.setVisibility(View.GONE);
4         }else{
5             mTextView.setVisibility(View.VISIBLE);
6             mClick.setVisibility(View.VISIBLE);
7         }

代码的含义是当Crimes集合不为空时,对mTextView及mClick进行隐藏,否则进行显示.

  

安卓权威编程 挑战练习 13.8 用于RecyclerView的空视图