0

我正在使用扩展的 ArrayAdapter 填充 ListActivity 的 ListView,以将某些条件应用于它返回的数据。由于多种可能的原因,适配器可能会返回一个空集,并且由于这些条件是由用户设置的,我想在 android:empty 视图上使用 setText() 反馈信息。在 ListActivity(setListAdapter 之前和之后)我尝试过

        TextView t = new TextView(this);
        t.setText("HEY!");
        getListView().setEmptyView(t);

并且

        getListView().getEmptyView().setVisibility(View.GONE);
        TextView t = new TextView(this);
        t.setText("HEY!");
        ((ViewGroup)getListView().getParent()).addView(t);
        getListView().setEmptyView(t);

但我只得到布局 android:empty 中设置的消息。

谢谢!

4

3 回答 3

8

我很惊讶这还没有出现并且已经得到回答......我认为它非常有用。没有花太多时间找到答案:

    MyAdapter mAdapter = new MyAdapter(this, R.layout.file_row, data);      
    setListAdapter(mAdapter);
    ListView listView = (ListView)findViewById(android.R.id.list);
    if (mShowOnlySomeSubset) {
        listView.setEmptyView(findViewById(R.id.emptySubset));
    } else if (mShowOnlySomeOtherSubset) {
        listView.setEmptyView(findViewById(R.id.emptyOtherSubset));
    } else {
        listView.setEmptyView(findViewById(android.R.id.empty));            
    }

R.id.emptySubset 和 R.id.emptyOtherSubset 是在与 android:list 和 android:empty 元素相同的布局 .xml 文件中定义的 TextViews 的 id。

十分简单 :)

于 2011-04-18T17:38:37.817 回答
3

你可以试试这个:

http://www.littlefluffytoys.com/?p=74

基本上他们说你必须确保在使用它之前将 emptyView 添加到视图层次结构中。

TextView emptyView = new TextView(context);
emptyView.setLayoutParams(
  new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
emptyView.setText(“This appears when the list is empty”);
emptyView.setVisibility(View.GONE);
((ViewGroup)list.getParent()).addView(emptyView);
list.setEmptyView(emptyView);
于 2011-04-16T02:51:59.097 回答
2

您可以采用这种略有不同的方法:http ://wiresareobsolete.com/wordpress/2010/08/adapting-to-empty-views/

于 2011-04-16T02:51:08.950 回答