2

我有通过游标加载器获取数据ListActivity的经典ListFragment设计。ListFragment

基本安排有两种可能的结果-

光标为空或有数据。

使用数据list_row.xml填充数据库中的项目。

如果为空,我会得到一个没有用户信息的空白屏幕。

我已经设置了一个TextView <i>"No records found message"</i>可以从 ListFragment 变为可见或不可见的设置。问题是:

  1. ListFragment 无法访问 ListActivity 上的视图。
  2. 如何从 ListFragment 调用以下 ListActivity 方法?
    公共无效更新视图(布尔数据){

        如果(数据){         
             noRecordsFound.setVisibility(View.GONE);       
        } 别的 {            
             noRecordsFound.setVisibility(View.VISIBLE);
        }
    }   

我试图从 中访问onLoadFinishedListFragment但这不可访问。有什么帮助吗?

4

2 回答 2

1

感谢 MH 提供的替代方法,但我遇到了自己问题的答案。虽然我认为 MH 的答案最适合我的情况,但我提供了一个我最初想做的解决方案,以防有人需要将它用于列表视图以外的事情。

好吧,我在 Cursor Loader 中包含了该if (cursor.getCount() < 1)块,因此:onLoadFinished()

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

    if (cursor.getCount() < 1) {

        TextView noNotes    = (TextView) getActivity().findViewById(R.id.noNotes);
        noNotes.setVisibility(View.GONE);
    }
    adapter.swapCursor(cursor);
}
于 2012-04-19T10:01:22.853 回答
0

根据之前的评论:

我不太了解您的第一个问题,因为视图应该是片段布局的一部分,而不是活动的,对吗?

关于切换“空”消息:为什么不简单地使用setEmptyView(...)ofListViewsetEmptyText(...)of的内置功能ListFragment(在支持库中也可用)?第一个允许您为空消息显示更复杂的视图层次结构,以防您需要

于 2012-04-17T19:13:48.257 回答