zoukankan      html  css  js  c++  java
  • 安卓权威编程指南 挑战练习 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进行隐藏,否则进行显示.

      

  • 相关阅读:
    Nginx如何配置Http、Https、WS、WSS?
    关于MySQL日志,我与阿里P9都聊了些啥?
    一文搞懂MySQL体系架构!!
    在业务高峰期拔掉服务器电源是一种怎样的体验?
    千万不要轻易尝试“熊猫烧香”,这不,我后悔了!
    从小白程序员到大厂高级技术专家我看过哪些书籍?
    聊一聊我在 B 站自学 Java 的经历吧
    计算机网络的 89 个核心概念
    MQTT 协议是个啥?这篇文章告诉你!
    1.5w字 + 24张图肝翻 TCP。
  • 原文地址:https://www.cnblogs.com/chase1/p/7183355.html
Copyright © 2011-2022 走看看