调用ListView的setEmpty方法不起作用(列表为空时不显示任何内容)

MyN*_*ero 13 android listview

我有一个Activity,它包含一个用XML定义的ListView(它不是ListActivity类的子类).

我想在ListView为空时显示一条消息,所以我尝试使用setEmptyView方法:

listView = (ListView) findViewById(R.id.list);
TextView emptyListText = new TextView(this);
// also tried with the following line uncommented
// emptyListText.setId(android.R.id.empty);
emptyListText.setText(getString(R.string.EmptyList));
listView.setEmptyView(emptyListText);
Run Code Online (Sandbox Code Playgroud)

但它没有用.

有任何想法吗?

谢谢.

McS*_*tch 23

调用后,您需要在代码中添加以下两行setText():

emptyListText.setVisibility(View.GONE);
((ViewGroup)listView.getParent()).addView(emptyListText);
Run Code Online (Sandbox Code Playgroud)

如果可见性未设置为GONE(隐藏),则TextView将始终显示为可见.第二行将TextView放入ListView的ViewGroup中 - 在使用声明性XML视图时会自动处理.


资料来源:http://www.littlefluffytoys.com/? p = 74

  • 谢谢,将视图放在同一ViewGroup帮助.使用setEmptyView自动设置GONE,因此您无需调用setVisibility. (5认同)

ggo*_*eze 0

嗯,也许原因是视图没有设置布局参数。尝试为该视图设置一些布局参数,我认为这会起作用。像这样的东西:

emptyListText.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请尝试使用如下所示的方法来膨胀 ListView 父级 (R.id.list) 中的视图:

mEmptyListView = (LinearLayout) getLayoutInflater().inflate(
                R.layout.no_items,
                (LinearLayout) findViewById(R.id.list));
mListView.setEmptyView(findViewById(R.id.no_items));
Run Code Online (Sandbox Code Playgroud)

我是凭记忆写的,所以如果它不起作用或有任何错别字,请告诉我。基本上的想法是你的视图应该添加到布局中

格尔