如何查看FirestoreRecyclerAdapter是否为空?

时间:2019-08-23 17:43:20

标签: java android google-cloud-firestore

我想知道如何发现FirestoreRecyclerAdapter仅为空。通过下面的代码,我可以发现它是否包含一个或多个实例,但是当它里面没有对象时,它不会确切告诉我。验证if(adapter.getItemCount == 0)每次都会显示,因为适配器每次都会通过0计数,因此显然此功能不起作用。

那么如何发现它是否完全空了?

这是我的代码:

Query query = spotsCollection.whereEqualTo("cityId", cityId).limit(5);

FirestoreRecyclerOptions<Spots> options = new FirestoreRecyclerOptions.Builder<Spots>()
    .setQuery(query, Spots.class)
    .build();

FirestoreRecyclerAdapter<Spots, SpotViewHolder> adapter = new FirestoreRecyclerAdapter<Spots, SpotViewHolder>(options) {
    @Override
    protected void onBindViewHolder(@NonNull SpotViewHolder spotViewHolder, int i, @NonNull Spots spots) {
        if(i > 3)
            // Do something with i > 3
    }

    @NonNull
    @Override
    public SpotViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(getContext()).inflate(R.layout.recycler_app_spots, parent, false);
        return new SpotViewHolder(view);
    }
};

if(adapter.getItemCount() == 0)
    Toast.makeText(getContext(), "Empty", Toast.LENGTH_SHORT).show();

1 个答案:

答案 0 :(得分:1)

覆盖onDataChanged()并检入

FirestoreRecyclerAdapter<Spots, SpotViewHolder> adapter = new FirestoreRecyclerAdapter<Spots, SpotViewHolder>(options) {
    @Override
    protected void onBindViewHolder(@NonNull SpotViewHolder spotViewHolder, int i, @NonNull Spots spots) {
    //...
    }

    @NonNull
    @Override
    public SpotViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    //...
    }


    // Add this
    @Override
    public void onDataChanged() {
    // do your thing
    if(getItemCount() == 0)
    Toast.makeText(getContext(), "Empty", Toast.LENGTH_SHORT).show();
    }
};