我有经典的ListActivity
- ListFragment
设计,ListFragment
通过游标Loader获取数据。
基本安排有两种可能的结果 -
光标为空或有数据。
使用数据,list_row.xml
将填充数据库中的项目。
如果为空,我会看到一个空白屏幕,但没有该用户的信息。
我已经设置了TextView <i>"No records found message"</i>
,可以从ListFragment中使其可见或不可见。问题是:
public void updateView(boolean data) { if (data) { noRecordsFound.setVisibility(View.GONE); } else { noRecordsFound.setVisibility(View.VISIBLE); } }
我尝试从onLoadFinished
的{{1}}进行访问,但这不可访问。有什么帮助吗?
答案 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(...)
的内置功能(也可以在支持库中找到)?第一个允许您为空消息显示更复杂的视图层次结构,以防您需要