这是代码的片段,我在调用我的livesata观察方法时创建了适配器。
mViewModel.getMutableLiveData().observe(this, new Observer<Filters>() {
@Override
public void onChanged(@Nullable Filters filters) {
if(filters != null){
FirebaseFirestore mFireStored = FirebaseFirestore.getInstance();
Log.d("FiltersINfoVM",filters.getPrice() +" ");
Log.d("FiltersINfoVM",filters.getSortBy() +" ");
Log.d("FiltersINfoVW",filters.getCategory() +" ");
Log.d("FiltersINfoVW",filters.getSearchDescription(getContext()) +" ");
Log.d("FiltersINfoVW",filters.getCity() +" ");
// Construct query basic query
CollectionReference collectionReference = mFireStored.collection("Products");
//Query query = collectionReference.orderBy("Products");
// Category (equality filter)
// if (filters.hasCategory()) {
// query2 = collectionReference.whereEqualTo(Product.FIELD_CATEGORY,"docs" );//filters.getCategory()
// }
// City (equality filter)
// if (filters.hasCity()) {
// query2 = collectionReference.whereEqualTo(Product.FIELD_CITY,"owerri" );//filters.getCity()
// }
//
// // Price (equality filter)
// if (filters.hasPrice()) {
// query2 = collectionReference.whereEqualTo(Product.FIELD_PRICE, filters.getPrice());
// }
// Sort by (orderBy with direction)
// if (filters.hasSortBy()) {
// //query = collectionReference.orderBy(filters.getSortBy(), filters.getSortDirection())
// Log.d("Sort Values method",filters.getSortBy());
// query2 = collectionReference.orderBy(filters.getSortBy(),filters.getSortDirection());
// }
query2 = collectionReference.orderBy("productName", Query.Direction.ASCENDING);
// Limit items
//query = collectionReference.limit(LIMIT);
// query = collectionReference.orderBy("numRatings", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Product> response2 = new FirestoreRecyclerOptions.Builder<Product>()
.setQuery(query2,Product.class)
.build();
FirestoreRecyclerAdapter<Product,ExploreViewholder>
adapterResp = new FirestoreRecyclerAdapter<Product,ExploreViewholder>(response2) {
@Override
public ExploreViewholder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_view_explore_item, parent, false);
return new ExploreViewholder(view);
}
@Override
protected void onBindViewHolder(@NonNull ExploreViewholder holder, int position, @NonNull Product model) {
holder.productName.setText(model.getProductName());
holder.creatorName.setText(mUser.getDisplayName());
holder.productDesc.setText(model.getProductDescription());
// Glide.with(getContext())
// .load(model.getProductImageUrl())
// .into(holder.productImage);
}
@Override
public void onError(FirebaseFirestoreException e) {
Log.e("error", e.getMessage());
}
};
adapterResp.notifyDataSetChanged();
// mRecycler.setAdapter(adapterResp);
mRecycler.swapAdapter(adapterResp,true);
}
}
});
我在onchanged方法中获取过滤器对象中的数据,并且一切都按预期工作,除非是时候调用Firestore回收器适配器的重写方法,(他们不这样做,我设置了断点并尝试调试,执行只是跳过这些方法),因此RecyclerView不显示任何数据。 &#34;产品&#34;是一个模型类,ExploreViewHolder是RecyclerView的查看器。问题是我第一次查询数据库时收到的数据并显示在recycleler视图中..但是我想在运行时再次查询数据,我是使用对话框片段进行的,我创建了一个新的查询新的适配器和我交换旧的适配器这个问题是它在这个新的查询后它不会在recyclerview中显示任何内容......