Java 从Firestore Android按类别名称对Recyclerview项目数据排序
我正在创建一个Android杂货店应用程序,其中使用了firestore。我正在实现一个嵌套的Recyclerview,在这里我已经完成了按类别名称从firestore到recycler视图显示数据的编码 但是,所有产品都显示在回收视图中,如下图所示。数据不按类别名称排序 代码 ProductsAdapterbyCategory.javaJava 从Firestore Android按类别名称对Recyclerview项目数据排序,java,android,google-cloud-firestore,android-recyclerview,nestedrecyclerview,Java,Android,Google Cloud Firestore,Android Recyclerview,Nestedrecyclerview,我正在创建一个Android杂货店应用程序,其中使用了firestore。我正在实现一个嵌套的Recyclerview,在这里我已经完成了按类别名称从firestore到recycler视图显示数据的编码 但是,所有产品都显示在回收视图中,如下图所示。数据不按类别名称排序 代码 ProductsAdapterbyCategory.java import android.content.Context; import android.view.LayoutInflater; import and
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chattthedev.shoppingguskara.Activities.Models.ProductsModel;
import com.chattthedev.shoppingguskara.R;
import java.util.List;
public class ProductsAdapterbyCategory extends
RecyclerView.Adapter<ProductsAdapterbyCategory.ViewHolderForProducts> {
List<ProductsModel> productsbycat;
Context context;
public ProductsAdapterbyCategory(List<ProductsModel> productsbycat, Context context) {
this.productsbycat = productsbycat;
this.context = context;
}
@NonNull
@Override
public ViewHolderForProducts onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.singleforitembycat, parent, false);
ViewHolderForProducts viewHolderForProducts = new ViewHolderForProducts(view);
return viewHolderForProducts;
}
@Override
public void onBindViewHolder(@NonNull ViewHolderForProducts holder, int position) {
holder.catnameinprod.setText(productsbycat.get(position).getItemCategory());
ProductsAdapter2 productsAdapter2 = new ProductsAdapter2(productsbycat, context);
holder.recyclerViewinprod.setHasFixedSize(true);
holder.recyclerViewinprod.setLayoutManager(new LinearLayoutManager(context, RecyclerView.HORIZONTAL, false));
holder.recyclerViewinprod.setAdapter(productsAdapter2);
holder.recyclerViewinprod.setNestedScrollingEnabled(false);
}
@Override
public int getItemCount() {
return (productsbycat != null ? productsbycat.size() : 0);
}
public class ViewHolderForProducts extends RecyclerView.ViewHolder {
public TextView catnameinprod;
public Button viewmoreinprod;
public RecyclerView recyclerViewinprod;
public ViewHolderForProducts(@NonNull View itemView) {
super(itemView);
catnameinprod = itemView.findViewById(R.id.catnameforfetch);
viewmoreinprod = itemView.findViewById(R.id.buttviewmoreitem);
recyclerViewinprod = itemView.findViewById(R.id.recyclerprodfetch);
}
}
}
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Filter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.chattthedev.shoppingguskara.Activities.Models.ProductsModel;
import com.chattthedev.shoppingguskara.R;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
public class ProductsAdapter2 extends RecyclerView.Adapter {
List<ProductsModel> productsModelList;
Context context;
public ProductsAdapter2(List<ProductsModel> productsModelList, Context context) {
this.productsModelList = productsModelList;
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.horizontal_scroll_item, parent, false);
ProductsAdapter2.ViewHolderClass2 viewHolderClass = new ProductsAdapter2.ViewHolderClass2(view);
return viewHolderClass;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ProductsAdapter2.ViewHolderClass2 viewHolderClass = (ProductsAdapter2.ViewHolderClass2) holder;
ProductsModel productsModel = productsModelList.get(position);
viewHolderClass.proditemname.setText(productsModel.getItemname());
viewHolderClass.proditemprice.setText("Rs." + productsModel.getItemActualPrice() + "/-");
Picasso.get().load(productsModel.getItemImageUrl()).into(viewHolderClass.prodimage);
}
public void updatelist(List<ProductsModel> models){
productsModelList = new ArrayList<>();
productsModelList.addAll(models);
notifyDataSetChanged();
}
public Filter getFilter(){
return new Filter() {
private List<ProductsModel> filtered = new ArrayList<ProductsModel>();
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString().toLowerCase();
filtered.clear();
if(charString.isEmpty()){
filtered = productsModelList;
//filteredCUG = CUG;
}
else{
for (ProductsModel cug : productsModelList){
if( cug.getItemname().toLowerCase().contains(charString)){
filtered.add(cug);
}
}
//filteredCUG = filtered;
}
FilterResults filterResults = new FilterResults();
filterResults.values = filtered;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
productsModelList = (List<ProductsModel>) filterResults.values;
notifyDataSetChanged();
}
};
}
@Override
public int getItemCount() {
return productsModelList.size();
}
public class ViewHolderClass2 extends RecyclerView.ViewHolder {
TextView proditemname, proditemprice, productitemdiscount;
ImageView prodimage;
public ViewHolderClass2(@NonNull View itemView) {
super(itemView);
proditemname = itemView.findViewById(R.id.hsproducttitle);
proditemprice = itemView.findViewById(R.id.hsproductprice);
prodimage = itemView.findViewById(R.id.hsproductimage);
productitemdiscount = itemView.findViewById(R.id.hsproductdesc);
}
}
}
public class ProductsModel {
private String ItemActualPrice, ItemCategory, ItemDescription, ItemDiscount,
ItemFinalPrice, ItemId, ItemImageUrl, ItemStock, ItemUnit, ItemWeight,
Itemname;
public ProductsModel() {
}
public ProductsModel(String itemActualPrice, String itemCategory, String
itemDescription, String itemDiscount, String itemFinalPrice, String itemId,
String itemImageUrl, String itemStock, String itemUnit, String itemWeight,
String itemname) {
ItemActualPrice = itemActualPrice;
ItemCategory = itemCategory;
ItemDescription = itemDescription;
ItemDiscount = itemDiscount;
ItemFinalPrice = itemFinalPrice;
ItemId = itemId;
ItemImageUrl = itemImageUrl;
ItemStock = itemStock;
ItemUnit = itemUnit;
ItemWeight = itemWeight;
Itemname = itemname;
}
public String getItemActualPrice() {
return ItemActualPrice;
}
public void setItemActualPrice(String itemActualPrice) {
ItemActualPrice = itemActualPrice;
}
public String getItemCategory() {
return ItemCategory;
}
public void setItemCategory(String itemCategory) {
ItemCategory = itemCategory;
}
public String getItemDescription() {
return ItemDescription;
}
public void setItemDescription(String itemDescription) {
ItemDescription = itemDescription;
}
public String getItemDiscount() {
return ItemDiscount;
}
public void setItemDiscount(String itemDiscount) {
ItemDiscount = itemDiscount;
}
public String getItemFinalPrice() {
return ItemFinalPrice;
}
public void setItemFinalPrice(String itemFinalPrice) {
ItemFinalPrice = itemFinalPrice;
}
public String getItemId() {
return ItemId;
}
public void setItemId(String itemId) {
ItemId = itemId;
}
public String getItemImageUrl() {
return ItemImageUrl;
}
public void setItemImageUrl(String itemImageUrl) {
ItemImageUrl = itemImageUrl;
}
public String getItemStock() {
return ItemStock;
}
public void setItemStock(String itemStock) {
ItemStock = itemStock;
}
public String getItemUnit() {
return ItemUnit;
}
public void setItemUnit(String itemUnit) {
ItemUnit = itemUnit;
}
public String getItemWeight() {
return ItemWeight;
}
public void setItemWeight(String itemWeight) {
ItemWeight = itemWeight;
}
public String getItemname() {
return Itemname;
}
public void setItemname(String itemname) {
Itemname = itemname;
}
}
Firestore数据库结构屏幕截图
您可以在firestore中创建两个不同的集合(肉、水果)请编辑您的问题并将您的数据库结构添加为屏幕截图。已编辑的问题。请检查请同时发布
ProductsModel
类的内容。添加了ProductsModel,请立即检查问题是类/数据库中字段的命名。请参阅副本,了解如何使用注释解决此问题。
private void getproductsfromcats() {
Query query = collectionReference.orderBy("ItemCategory");
query.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (QueryDocumentSnapshot queryDocumentSnapshot : queryDocumentSnapshots) {
ProductsModel productsModel = queryDocumentSnapshot.toObject(ProductsModel.class);
productsModelList2.add(productsModel);
}
productsAdapterbyCategory = new
ProductsAdapterbyCategory(productsModelList2,view.getContext());
product_items_for_cat.setAdapter(productsAdapterbyCategory);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(view.getContext(), "Failed", Toast.LENGTH_SHORT).show();
}
});
}