Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Firestore Android按类别名称对Recyclerview项目数据排序_Java_Android_Google Cloud Firestore_Android Recyclerview_Nestedrecyclerview - Fatal编程技术网

Java 从Firestore Android按类别名称对Recyclerview项目数据排序

Java 从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

我正在创建一个Android杂货店应用程序,其中使用了firestore。我正在实现一个嵌套的Recyclerview,在这里我已经完成了按类别名称从firestore到recycler视图显示数据的编码

但是,所有产品都显示在回收视图中,如下图所示。数据不按类别名称排序

代码

ProductsAdapterbyCategory.java

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();

        }
    });
}