android - FirebaseListAdapter 空视图
问题描述
我正在使用 FirebaseListAdapter 并覆盖所需的 onPopulateView 方法以从实时数据库中收集数据,然后将适配器设置为 UI 中的 ListView:
mMessageSummaryAdapter = new FirebaseListAdapter<MessageSummary> (getActivity(),
MessageSummary.class, R.layout.message_list_item, mChatDbReference) {
@Override
protected void populateView(View v, MessageSummary msgSummary, int position) {
final ImageView buddyImage = (ImageView) v.findViewById(R.id.small_image_view_messages);
final TextView buddyName = (TextView) v.findViewById(R.id.contact_username);
....
mListView.setAdapter(mMessageSummaryAdapter);
使用我使用过的其他适配器,可以检查进入它的数据是否为空,并相应地设置视图的可见性,如果数据为空,则拉入一个空视图:
if (foundRoutesList == null || foundRoutesList.size() == 0) {
mEmptyView.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.GONE);
} else {
mEmptyView.setVisibility(View.GONE);
mAdapter = new SearchResultsAdapter(getContext(), foundRoutesList, this);
mRecyclerView.setAdapter(mAdapter);
}
据我了解, FirebaseListAdapter 遍历找到的项目并将它们一一添加,那么我如何测试结果是否为空以便可以显示空文本视图?
解决方案
要解决此问题,请在适配器类中覆盖 FirebaseListAdapter 的getCount()方法并检查是否为空:
if(getCount() == 0) {
mEmptyView.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.GONE);
} else {
mEmptyView.setVisibility(View.GONE);
mAdapter = new SearchResultsAdapter(getContext(), foundRoutesList, this);
mRecyclerView.setAdapter(mAdapter);
}
推荐阅读
- java - 创建一个按钮,即使应用程序处于暂停状态,它也会留在前台
- windows - 在没有 Visual Studio 2017 的 Windows 上构建 Qt WebEngine
- bash - 递归地grep文本文件以过滤绝对路径
- javascript - 三列布局内的可折叠导航
- google-chrome - 如何调整 chrome 窗口的大小以进行 ember 验收测试?
- spring-boot - Spring Boot - 新添加的列导致错误
- ios - 获取当前 ViewController 的子类 navigationController
- c++ - 派生类的构造函数调用的函数在基类中不应该是纯虚函数
- python-3.x - sudo:pip3:找不到命令-在centos 7中
- azure - Azure CosmosDB 数据触发器未进行实际更新