文档章节

Android listFragment SetEmptyView 方法实现数据为空时的提示

koalaTM
 koalaTM
发布于 2014/07/27 22:07
字数 557
阅读 315
收藏 0

我们知道在可以在ListFragment 中很方便的加载数据。因为Android为我们内置了一个listview,我们可以直接将数据绑定在上面。然而,当我们的应用中没有数据显示的时候,如何可以有效的提示用户或者让用户进行其他操作呢?

我们这里可以使用 setEmptyView(view)方法来实现。

具体代码如下

public class MylistFragment extends ListFragment{
    public View onCreatView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
        View view = super.onCreateView(inflater, container,
		 savedInstanceState);
        TextView emptyview = new TextView(getActivity());
        emptyview.setText("数据为空");
        ListView listview = (ListView)view.findViewById(android.R.id.list);
        listview.setEmptyView(emptyview);
    }
    
}

这里我动态创建了一个Textview 用来显示提示。然后使用Listview.setEmptyView(emptyview)方法绑定数据为空时的布局。运行后效果就有了。



但是我们有时候并不是仅仅只是提示用户而已,希望能有个丰富的界面来显示更多的内容。比如我们需要给用户一个按钮,让他进行其他操作。我们当然可以继续动态添加一个按钮,但是,我们有更好的方法,为什么不用呢?

因为我们继承的是ListFragment,所以,系统帮我们内置了ListView,当然我们也能使用自己的布局。

View view = inflater.inflate(R.layout.my_list, null, false);
用这句话替换super.onCreatView()方法。选择我们自己创建的布局文件。

my_list.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/crime_list_layout_id"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

    

</FrameLayout>

然后,新建一个empty view empty_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:id="@+id/empty_layout">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="数据为空"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button_add_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加数据" 
        android:layout_marginTop="40dp"/>

</LinearLayout>



将建立好的empty_view 添加到当前布局

View emptyview = inflater.inflate(R.layout.empty_view, null, false);



设置按钮的单击事件

Button addDataButton = (Button)emptyview.findViewById(R.id.add_data);


addDataButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

addData();\\添加数据的具体实现

}

});



至此,运行之后,如果没有数据,就会加载empty_view.xml中的内容了。

© 著作权归作者所有

koalaTM
粉丝 0
博文 5
码字总数 2087
作品 0
黄浦
程序员
私信 提问
ListView 空值时的友好提示

做 项目的时候,如果ListView或者gridView为空,进入界面一大片的空白,不是很好看,这个时候我们希望没有数据的时候给出提示,完全可以通过 手动判断,当ListView中的size为0,显示或者隐藏...

jxlgzwh
2013/07/19
198
0
Fragment 的生命周期及使用方法详解

Fragment 的基础知识介绍 1.1 概述 1.1.1 特性 By hebang32624 Fragment 是 activity 的界面中的一部分或一种行为。可以把多个 Fragment 组合到一个 activity 中来创建一 个多面界面并且可以...

梁DH
2013/04/25
13.7K
2
Fragment 的使用(1)

基本:http://www.cnblogs.com/mengdd/archive/2013/01/08/2851368.html 深入:http://blog.csdn.net/pi9nc/article/details/12249619 Fragment  Android是在Android 3.0 (API level 11)开始......

chuiyuan
2014/07/23
59
0
Android Fragment 基本介绍

Fragment   Android是在Android 3.0 (API level 11)开始引入Fragment的。   可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Act...

postdep
2014/06/11
308
0
Android Fragment

Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的...

Thanks
2013/01/21
5.5K
2

没有更多内容

加载失败,请刷新页面

加载更多

Archiva 不小心删掉了管理员权限怎么办

Archiva 的界面和 UI 比较容易出问题。 在添加用户和为用户进行权限修改的时候,不小心连 admin 这个用户的权限都删掉了。 这个时候应该如何恢复 admin 这个用户的权限? 这个时候你可以尝试...

honeymoose
33分钟前
4
0
Java8新特性之空指针异常的克星Optional类

Java8新特性系列我们已经介绍了Stream、Lambda表达式、DateTime日期时间处理,最后以“NullPointerException” 的克星Optional类的讲解来收尾。 背景 作为开发人员每天与NullPointerExceptio...

程序新视界
45分钟前
4
0
OSChina 周四乱弹 —— 福布斯终身秃头奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享如是我闻的单曲《地藏经上卷》: 如是我闻#今日歌曲推荐# 《地藏经上卷》- 如是我闻 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
48分钟前
172
8
Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
6
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部