gpt4 book ai didi

android - 将 PagedListAdapter 与 LiveData 一起使用时如何显示空 View ?

转载 作者:行者123 更新时间:2023-12-05 00:16:38 24 4
gpt4 key购买 nike

通常在 RecyclerView 上,当 RecyclerView 上没有项目时,我会显示一个空 View ,因为我控制对 RecyclerView 的所有更新通过 notify 方法,这非常简单,但是使用 PagedListAdapter 更新似乎只是在后台发生,那么我如何隐藏或显示我的空 View ?

例如,如果我在 Room DB 上调用 deleteItem()PagedListAdapter 将自行更新,而无需我调用 notifyItemDeleted 但如果它是列表中的最后一项,我的代码如何知道显示空 View ?每次发生计数操作时我都可以查询数据库,但这似乎很浪费。有更好的办法吗?

最佳答案

正如评论中提到的,您可以在用于 .submitList() 的同一个 LiveData 观察器中测试列表的空性。

Java 示例:

我假设您正在关注类似于 this snippet 的内容在 PagedListAdapter 文档中找到。我只是向该示例代码添加空检查。

class MyActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
MyViewModel viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
RecyclerView recyclerView = findViewById(R.id.user_list);
UserAdapter<User> adapter = new UserAdapter();
viewModel.usersList.observe(this, pagedList -> {
// Check if the list is empty
updateView(pagedList.size());
adapter.submitList(pagedList));

pagedList.addWeakCallback(null, new PagedList.Callback() {

@Override
public void onChanged(int position, int count) {
updateView(pagedList.size())
// updateView(adapter.getItemCount())
}

...
}
}
recyclerView.setAdapter(adapter);
}

private void updateView(int itemCount) {
if (itemCount > 0) {
// The list is not empty. Show the recycler view.
recyclerView.setVisibility(View.VISIBLE);
emptyView.setVisibility(View.GONE);
} else {
// The list is empty. Show the empty list view
recyclerView.setVisibility(View.GONE);
emptyView.setVisibility(View.VISIBLE);
}

}
}

Kotlin 示例:

上面的 Java 示例实际上只是我在 Android Paging codelab 中找到的 Kotlin 示例的 Java 翻译。 .

关于android - 将 PagedListAdapter 与 LiveData 一起使用时如何显示空 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56382936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com