![](/img/trans.png)
[英]Why is my Objects.values() returning false when my array of Objects has a matching value?
[英]recyclerViewAdapter.getItemCount() returning 0 even when it has objects inside?
我正在構建一個帶有RecyclerView
的Fragment
,它顯示從我的數據庫中檢索到的通知。 一切正常,除了這行代碼:
問題:
recyclerViewAdapter.getItemCount()
即使RecyclerViewAdapter
存在元素,此語句也會返回 0。 完整的場景是,每當加載片段時,就會彈出帶有適當消息的Toast
,但在稍微延遲之后,第一個通知會從我的數據庫中出現。
問題:
有沒有一種方法可以在所有提取完成后調用語句recyclerViewAdapter.getItemCount()
,因為我的解釋是一旦創建活動就會執行該塊,而不是等待適配器確認是否有任何通知是否在數據庫中?
代碼塊:
以下是涉及recyclerViewAdapter
的所有代碼塊。
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_notice, container, false);
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
FirebaseRecyclerOptions<Notice> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Notice>().setQuery(FirebaseDatabase.getInstance().getReference().child("Notice").child(Values.schoolCode).child(Values.student.getClass_txt()), Notice.class).build();
recyclerViewAdapter = new RecyclerViewAdapter(firebaseRecyclerOptions);
recyclerView.setAdapter(recyclerViewAdapter);
if (recyclerViewAdapter.getItemCount() == 0) {
Toast.makeText(getContext(), "No Notice Found", Toast.LENGTH_SHORT).show();
}
return view;
}
@Override
public void onStart() {
super.onStart();
recyclerViewAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
recyclerViewAdapter.stopListening();
}
注意:我已經在全局 scope 中初始化了變量本身,以便稍后在代碼中Override
適當的方法。
提前致謝: :)
將適配器分配給 recyclerView 時沒有創建視圖。 我的建議是在onCreateView
和onViewCreated
之間拆分邏輯
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_notice, container, false);
}
@Override
public onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
FirebaseRecyclerOptions<Notice> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Notice>().setQuery(FirebaseDatabase.getInstance().getReference().child("Notice").child(Values.schoolCode).child(Values.student.getClass_txt()), Notice.class).build();
recyclerViewAdapter = new RecyclerViewAdapter(firebaseRecyclerOptions);
recyclerView.setAdapter(recyclerViewAdapter);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.