`

ListView之setEmptyView的问题

阅读更多
使用listView或者gridView时,当列表为空时,有时需要显示一个特殊的empty view来提示用户,一般情况下,如果你是继承ListActivity,只要
<ListView android:id="@id/android:list".../>
<TextView android:id="@id/android:empty.../>
当列表为空时就会自动显示TextView

但是,如果继承Activity的话,想出现上面的效果,就需要手动

<ListView android:id="@+id/list" .../>
<TextView android:id="@+id/empty" .../>

ListView list= (ListView)findViewById(R.id.mylist);
TextView tv= (TextView)findViewById(R.id.myempty);

list.setEmptyView(tv);

误区:
setEmptyView(View)这个函数很有误导性,有时可能会在代码中写EmptyView,像下面这样:

TextView tv= new TextView(this);
tv.setText("this is a empty view")
setEmptyView(tv);
这样是不行的。。。

但是后来我在老外的网上说下面这样是可行的,注意第4,5行:
TextView emptyView = new TextView(context);
emptyView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
emptyView.setText(“This appears when the list is empty”);
emptyView.setGravity(Gravity.CENTER);
emptyView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
emptyView.setVisibility(View.GONE);
((ViewGroup)listView.getParent()).addView(emptyView);
listView.setEmptyView(emptyView);

结果真的可行!
分享到:
评论
2 楼 gundumw100 2011-10-11  
jianghao3616 写道
请问大神,每次add的话,会导致一直向父View添加这个视图,请问下要怎么处理呀。谢谢~~

价格判断嘛if(emptyView==null)
if(emptyView==null){
				emptyView = new TextView(this);
				emptyView.setTag("emptyView");
				emptyView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
				emptyView.setText(R.string.empty);
				emptyView.setTextColor(Color.WHITE);
				emptyView.setVisibility(View.GONE);
				emptyView.setPadding(10, 10, 0, 0);
				ViewGroup vg=(ViewGroup)listView_4.getParent();
				if(vg!=null)
					vg.addView(emptyView);
		        listView_4.setEmptyView(emptyView);
			}
1 楼 jianghao3616 2011-10-11  
请问大神,每次add的话,会导致一直向父View添加这个视图,请问下要怎么处理呀。谢谢~~

相关推荐

    Android ListView之setEmptyView正确使用方法

    Android ListView之setEmptyView正确使用方法 Android ListView组件提供了一个空数据视图设置方法setEmptyView,该方法可以在ListView中显示一个空视图,以便在没有数据时提供一个友好的用户体验。然而,在使用...

    ListView加载图片处理错位的几种方法、图片缓存、listView简单动画

    - 使用ListView的setAdapter()前,先调用listView.setEmptyView(),显示空状态视图,提高用户体验。 - 考虑使用RecyclerView替代ListView,RecyclerView具有更强大的功能和更好的性能。 以上就是关于ListView加载...

    ListView for JSON.

    listView.setEmptyView(findViewById(R.id.empty_view)); // 为空时显示的视图 listView.setAdapter(new CustomListAdapter(this, new ArrayList())); // 初始为空 fetchJsonData(); // 发送请求获取数据 ``` 同时...

    listview空列表

    如果数据为空,调用ListView的`setEmptyView()`方法设置空列表视图。 ```java if (dataList.isEmpty()) { View emptyView = findViewById(R.id.empty_view); listView.setEmptyView(emptyView); } else { // ...

    Listview,Gridview空数据处理

    - **关联Empty View**:在代码中,通过ListView或GridView的setEmptyView()方法,将创建的空数据视图设置为对应的属性。 - **监听数据变化**:使用Adapter的registerDataSetObserver()方法注册一个数据集观察者,...

    简单好用的上拉加载下拉刷新 BaseRecyclerViewAdapterHelper

    一个强大并且灵活的 Android RecyclerViewAdapter。 优化Adapter代码(减少百分之70%代码) ...添加加载动画(一行代码轻松切换5种默认动画) ...设置空布局(比Listview的setEmptyView还要好用!)

    ListView的一个各种情况的例子

    设置空视图的方法是setEmptyView。 8. **自定义Adapter的优化** - 使用ViewHolder模式减少findViewById的调用。 - 在getView方法中合理使用convertView,避免不必要的视图创建。 - 避免在getView方法中进行耗时...

    listView的基本使用_添加数据源

    - 使用`setAdapter()`前先调用`setEmptyView()`,当数据为空时显示指定的视图。 - 考虑使用`AbsListView`的`recycling`机制,只创建足够的视图来填充屏幕。 10. **分页加载** 当数据量过大时,可以实现下拉刷新...

    自定义ListView

    可以使用ViewHolder设计模式减少查找视图的时间,通过设置`android:cacheColorHint="#00000000"`消除滚动时的闪烁,以及利用`setAdapter()`前先调用`setEmptyView()`来处理数据为空的情况。 7. **刷新与加载更多**...

    expandlist嵌套双listview

    同时,为了保持性能,记得在不需要显示内部ListView时调用setEmptyView()来隐藏它,避免不必要的绘制和计算。 为了在ListView中插入表格视图,可以考虑使用GridView或者TableLayout。GridView可以看作是水平方向和...

    ListView.rar

    - 使用Listview的`setEmptyView()`方法,当数据为空时显示特定视图。 以上就是关于ListView在Android开发中的基本使用和优化策略,对于初学者来说,熟练掌握这些知识能够帮助你创建出功能丰富且性能良好的列表型...

    listview使用方法

    此外,使用`setAdapter()`方法前先调用`setEmptyView()`可以展示一个空视图,当列表为空时显示。 8. **Header/Footer动态添加** 在运行时动态添加Header和Footer,可以增强ListView的动态性,例如在加载数据时显示...

    强大的RecyclerAdapter框架

    比Listview的setEmptyView还要好用。 添加拖拽、滑动删除 开启,监听即可,就是这么简单。 树形列表 比ExpandableListView还要强大,支持多级。 自定义ViewHolder 支持自定义ViewHolder,让开发者随心所欲。 扩展...

    EmptyListView

    实现这个功能的关键在于设置ListView的`setEmptyView()`方法,该方法接收一个View对象作为参数,当ListView的数据为空时,这个View将会被显示。 1. **创建布局文件**: 首先,我们需要创建一个XML布局文件,设计一...

    解决Android ListView数据为空及加载错误的方法

    数据为空的时候,ListView可以使用setEmptyView (View emptyView) 方法来我们需要的统一界面。数据加载失败呢?我们也可以统一进行处理。 //下面这个类是简单地封装用于无数据及加载错误的一个页面。 public class ...

    Android代码-更简单地设置EmptyView支持AdapterView、RecyclerView

    Just a Wheel—— A easier way to setEmptyView. Without having to write xml file every time. It supports AdapterView(ListView,GridView,etc) and RecyclerView. Dependency compile '...

Global site tag (gtag.js) - Google Analytics