title | tags | categories | top | ||
---|---|---|---|---|---|
Android编程权威指南(第2版)--第13章 工具栏 挑战练习 |
|
Android |
87 |
public void removeCrime(Crime c) {
mCrimes.remove(c);
}
mRemoveButton = (Button) v.findViewById(R.id.crime_remove_button);
mRemoveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CrimeLab.get(getActivity()).removeCrime(mCrime);
getActivity().finish();
}
});
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/crime_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/no_crime_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_crime"
android:layout_centerInParent="true"
android:layout_marginLeft="16dp"
android:gravity="center"
android:layout_marginRight="16dp"
style="?android:listSeparatorTextViewStyle"
android:layout_margin="15dp"/>
<Button
android:id="@+id/no_crime_add_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/no_crime_textview"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text="@string/add_crime"
android:background="@drawable/bt_selector"/>
</RelativeLayout>
<string name="no_crime">没有crime记录可以显示</string>
private TextView mNoCrimeTextView;
private Button mNoCrimeButton;
public void updateUI(){
CrimeLab crimeLab = CrimeLab.get(getActivity());
List<Crime> crimes = crimeLab.getCrimes();
//如果没有配置好CrimeAdapter,就创建一个CrimeAdapter
if (mAdapter == null){
//创建RecyclerAdapter
mAdapter = new CrimeAdapter(crimes);
// 然后设置给RecyclerView
mCrimeRecyclerView.setAdapter(mAdapter);
}else{
//如果已经配置好CrimeAdapter,就调用notifyDataSetChanged()
// 方法修改updateUI()方法
mAdapter.setCrimes(crimes);
// mAdapter.notifyDataSetChanged();
//实现高效的RecyclerView刷新方法
//如果想要刷新删除crime之后的CrimeListFragment,
// mAdapter.notifyItemChanged( mIndex ); //单例更新 -- 会报错
mAdapter.notifyDataSetChanged(); //全量更新
}
/*
挑战练习 用于RecyclerView的空列表
*/
if (crimes.size() == 0){
mNoCrimetextView.setVisibility( View.VISIBLE );
mNoCrimeButton.setVisibility( View.VISIBLE );
}else {
mNoCrimeButton.setVisibility( View.GONE );
mNoCrimetextView.setVisibility( View.GONE );
}
updateSubtitle();
}
Github具体代码:hyyyrwang.github.io
我的简书:https://www.jianshu.com/p/3196eac17739