1

经过多天的搜索和尝试都没有成功,我只是不知道如何正确使用ListView.setEmptyView功能。我发现的几乎所有示例都使用 aListActivity这不是我的情况。我正在Activity使用除 之外的其他小部件实现常规ListView,如下图所示:

左侧是普通布局的图片,底部是空视图。http://picpaste.com/g3926-0UP1wBBB.png

我正在使用以下代码设置空视图(此代码片段写在onCreate方法内部):

mListView.setEmptyView(LayoutInflater.from(this).inflate(
        R.layout.emptyview_default,
        (ViewGroup) findViewById(R.id.linearlayout1)));

emptyview_default是一个简单的TextView

<merge xmlns:android="...">
    <TextView ... />
</merge>

“空视图”总是显示在所有其他小部件的底部,而不是在列表内(如果ListView视图正常显示,如上图所示)。

我也尝试使用ListView自身 ( mListView) 作为ViewGroupinflate 方法的根,但是应用程序崩溃了。

我期待着帮助我理解我做错了什么的建议或任何指示。

4

1 回答 1

0

好的,所以不要使用inflate(int, ViewGroup)(它将返回根布局本身而不是膨胀的视图),inflate(int, ViewGroup, boolean)像这样使用:

LayoutInflater i = LayoutInflater.from(this);
ViewGroup root = (ViewGroup) findViewById(R.id.linearlayout1);
View empty = i.inflate(R.layout.emptyview_default, root, false);
mListView.setEmptyView(empty);

问题是 inflate 方法接受一个int并将ViewGroupinflated 附加View到传递的ViewGroup,然后返回那个ViewGroup。如果使用额外的参数来传递falseViewGroup则只会用于LayoutParams为inflated生成View,而不会添加到ViewGroup。这也会导致inflate()返回膨胀的View.

于 2013-05-22T21:02:12.303 回答