美文网首页Android开发Android开发经验谈Android技术知识
Android编程权威指南(第2版)—第13章挑战练习

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

作者: 亚欧沙龙 | 来源:发表于2018-08-11 12:27 被阅读8次

    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 挑战练习:优化字符串资源显示

    这个按照书本的代码进行修改即可,效果如如下
    Criminallntent

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

    (1)修改fragment_crime_list.xml

    原本只有一个RecyclerView组建,现在增加父组建,并增加一个textview和一个button
    <?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">
    
        <android.support.v7.widget.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>
    

    (2)string.xml里面加上

    <string name="no_crime">没有crime记录可以显示</string>
    

    (3)修改CrimeListFragment.java

    增加两个变量
    private TextView mNoCrimeTextView;
    private Button mNoCrimeButton;
    
    修改onCreateView方法为上面两个变量绑定id组件
    修改updateUI()增加如下代码
     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

    相关文章

      网友评论

      • b988fb6ab828:我如果删除不是从最后一个crime开始,就会闪退,你的会吗?

      本文标题:Android编程权威指南(第2版)—第13章挑战练习

      本文链接:https://www.haomeiwen.com/subject/rzfdbftx.html