1.在string.xml中添加下列語句
<string name="empty_crime_set">沒有記錄可以顯示</string>
2.修改fragment_crime_list.xml中的代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/crime_relative_layout">
<android.support.v7.widget.RecyclerView
android:id="@+id/crime_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:icon="@drawable/ic_menu_add"/>
<TextView
android:id="@+id/crime_set_empty_text_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="20sp"
android:text="@string/empty_crime_set"/>
</RelativeLayout>
3.在 CrimeListFragment 中引用該 TextView逛薇,并設(shè)置和添加 Crime 菜單選項(xiàng)相同的 ClickListener 的內(nèi)容荒给。
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() 方法中,獲取到數(shù)據(jù)集時(shí)锹杈,判斷一下數(shù)據(jù)集的長度两芳,如果大于零摔寨, 隱藏這個(gè) TextView,然后執(zhí)行之前一系列顯示的操作怖辆;如果為零是复,就隱藏 RecyclerView,顯示該 TextView竖螃。
public void updateUI(){
CrimeLab crimeLab=CrimeLab.get(getActivity());
List<Crime> 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的主要區(qū)別是:當(dāng)控件visibility屬性為INVISIBLE時(shí)淑廊,界面保留了view控件所占有的空間;而控件屬性為GONE時(shí)特咆,界面則不保留view控件所占有的空間季惩。
1.png
2.png