Android编程权威指南(第2版)—第13章挑战练习

13.6 挑战练习:删除crime记录

这个比较简单,分三步

  • 第一步创建一个button
  • 第二步在CrimeLab增加删除方法
public void removeCrime(Crime c) {
        mCrimes.remove(c);
    }
  • 第三步修改CrimeFragment.java的onCreateView方法,绑定按钮,增加监听事件
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();
            }
        });



13.7 挑战练习:优化字符串资源显示

这个按照书本的代码进行修改即可,效果如如下
Android编程权威指南(第2版)—第13章挑战练习_第1张图片
Criminallntent



13.8 挑战练习:用于RecyclerView的空视图

(1)修改fragment_crime_list.xml

原本只有一个RecyclerView组建,现在增加父组建,并增加一个textview和一个button



    

    

    

(2)string.xml里面加上

没有crime记录可以显示

(3)修改CrimeListFragment.java

增加两个变量
private TextView mNoCrimeTextView;
private Button mNoCrimeButton;
修改onCreateView方法为上面两个变量绑定id组件
修改updateUI()增加如下代码
 public void updateUI(){

        CrimeLab crimeLab = CrimeLab.get(getActivity());

        List 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:Pages

跟我的博客 : hyyyrwang.github.io

你可能感兴趣的:(Android编程权威指南(第2版)—第13章挑战练习)