如何查看 FirestoreRecyclerAdapter 是否为空?

E.A*_*kio 1 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();
Run Code Online (Sandbox Code Playgroud)

Yas*_*han 8

覆盖 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();
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 凉爽的。这是我的错误,getitemcount 已经存在于适配器类中,我们只需要使用它即可。很高兴能帮助你。 (2认同)