如何从ListFragment显示/隐藏活动视图

时间:2012-04-17 09:19:04

标签: android listactivity

我有经典的ListActivity - ListFragment设计,ListFragment通过游标Loader获取数据。

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

光标为空或有数据。

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

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

我已经设置了TextView <i>"No records found message"</i>,可以从ListFragment中使其可见或不可见。问题是:

  1. ListFragment无法访问ListActivity上的视图。
  2. 如何从ListFragment中调用以下ListActivity方法?
  3.     public void updateView(boolean data) {
    
            if (data) {         
                 noRecordsFound.setVisibility(View.GONE);       
            } else {            
                 noRecordsFound.setVisibility(View.VISIBLE);
            }
        }   
    

    我尝试从onLoadFinished的{​​{1}}进行访问,但这不可访问。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

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

好吧,我将if (cursor.getCount() < 1)块包含在Cursor Loader的onLoadFinished()内,kike so:

@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);
}

答案 1 :(得分:0)

根据之前的评论:

我真的不明白你的第一个问题,因为视图应该是片段布局的一部分,而不是活动的一部分,对吧?

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