如何使用哈希图从数据库中检索数据?

How to retrieve data from database using hashmap?

我有这个 recyclerview,当我点击一个项目时,我想从数据库中获取红色方块中的数据。

我想这样展示

我是这样保存的:

 Save.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.GINGERBREAD)
        @Override
        public void onClick(View v) {

            String refernce = TextRef.getEditText().getText().toString();
            String nompdv = textNomPdv.getEditText().getText().toString();
            String etat = textEtatCommande.getEditText().getText().toString();
            String datecommande = TextDateCommande.getEditText().getText().toString();
            String produitcommande = textProduit.getEditText().getText().toString();
            String qntcommande = editTextProduitQnt.getEditText().getText().toString();


            DatabaseReference newPost = reference.child(refernce);
            newPost.child("refernce").setValue(refernce);
            newPost.child("nompdv").setValue(nompdv);
            newPost.child("etat").setValue(etat);
            newPost.child("datecommande").setValue(datecommande);
            newPost.child("user_id").setValue(uid);
          
            Map<String, Object> values = new HashMap<>();
            values.put(produitcommande, qntcommande);

            DatabaseReference produitRef = reference.child(refernce).child("produit");
            produitRef.updateChildren(values);

这是我从第一个 activity (recyclerview) 发送数据的方式:

v.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(view.getContext(), Order_detail.class);
            int pos = v.getAdapterPosition();
            if (pos != RecyclerView.NO_POSITION) {
                Order clickedDataItem = listArray.get(pos);

                intent.putExtra("nompdv", clickedDataItem.getNompdv());
                intent.putExtra("reference", clickedDataItem.getRefernce());
                intent.putExtra("datecommande", clickedDataItem.getDatecommande());
                intent.putExtra("etat", clickedDataItem.getEtat());
             }

            view.getContext().startActivity(intent);
        }
    });

如何在recyclerview点击商品时获取商品及其数量?

更新:这是我的订单class:

public class Order implements Serializable {
    public  String refernce, nompdv, etat, datecommande, produitcommande, qntcommande;
     String user_id;

    public Order(){}

    public Order(String refernce, String nompdv, String etat, String datecommande, String produitcommande, String qntcommande, String user_id) {
        this.refernce = refernce;
        this.nompdv = nompdv;
        this.etat = etat;
        this.datecommande = datecommande;
        this.produitcommande = produitcommande;
        this.qntcommande = qntcommande;
        this.user_id = user_id;

    }

    public String getRefernce() {
        return refernce;
    }

    public void setRefernce(String refernce) {
        this.refernce = refernce;
    }

    public String getNompdv() {
        return nompdv;
    }

    public void setNompdv(String nompdv) {
        this.nompdv = nompdv;
    }

    public String getEtat() {
        return etat;
    }

    public void setEtat(String etat) {
        this.etat = etat;
    }

    public String getDatecommande() {
        return datecommande;
    }

    public void setDatecommande(String datecommande) {
        this.datecommande = datecommande;
    }

    public String getProduitcommande() {
        return produitcommande;
    }

    public void setProduitcommande(String produitcommande) {
        this.produitcommande = produitcommande;
    }

    public String getQntcommande() {
        return qntcommande;
    }

    public void setQntcommande(String qntcommande) {
        this.qntcommande = qntcommande;
    }

    public String getUser_id() {
        return user_id;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

}

The form我如何保存数据

更新 2:

这是 recyclerview 的适配器:

public class CommandeAdapter extends 
RecyclerView.Adapter<CommandeAdapter.CommandeViewHolder> {
List<Order> listArray;

public CommandeAdapter(List<Order> List) {
    this.listArray = List;
}

@NonNull
@Override
public CommandeAdapter.CommandeViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.commande_model, parent, false);

    return new CommandeViewHolder(v);
}

@Override
public void onBindViewHolder(@NonNull @NotNull CommandeAdapter.CommandeViewHolder holder, int position) {

    CommandeViewHolder v = (CommandeViewHolder) holder;
    final Order dataa = listArray.get(position);
    v.nom_pdv.setText(dataa.getNompdv());
    v.date.setText(dataa.getDatecommande());
    v.etat.setText(dataa.getEtat());

    v.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(view.getContext(), Order_detail.class);
            int pos = v.getAdapterPosition();
            if (pos != RecyclerView.NO_POSITION) {
                Order clickedDataItem = listArray.get(pos);

                intent.putExtra("nompdv", clickedDataItem.getNompdv());
                intent.putExtra("reference", clickedDataItem.getRefernce());
                intent.putExtra("datecommande", clickedDataItem.getDatecommande());
                intent.putExtra("etat", clickedDataItem.getEtat());
                
                }
             }

            view.getContext().startActivity(intent);
        }
    });
  }

public class CommandeViewHolder extends RecyclerView.ViewHolder {
    TextView nom_pdv, date, etat;

    public CommandeViewHolder(@NonNull @NotNull View itemView) {
        super(itemView);

        nom_pdv = itemView.findViewById(R.id.namepdv);
        date = itemView.findViewById(R.id.dateliv);
        etat = itemView.findViewById(R.id.etat);
     }
}

@Override
public int getItemCount() {
    return listArray.size();
}}

这是 activity 详细信息:

public class Order_detail extends AppCompatActivity {

TextView namepdv, refcommande, datecommande, etat, produitcmnd, qnt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_commande_detail2);

    namepdv = findViewById(R.id.nompdv);
    refcommande = findViewById(R.id.refcommande);
    datecommande = findViewById(R.id.datecommande);
    etat = findViewById(R.id.etatcommande);
     //  --------------------- //
    namepdv.setText(getIntent().getStringExtra("nompdv"));
    refcommande.setText(getIntent().getStringExtra("reference"));
    datecommande.setText(getIntent().getStringExtra("datecommande"));
    etat.setText(getIntent().getStringExtra("etat"));
 }}

根据你的问题,我假设 produit 下的 keys 是随机的。 因此,当您检索订单详细信息时,produit 将是一个 Hashmap。在 Order class.

中将 produit 声明为 Hashmap

您可以打印这些键和值。

for(Map.Entry<String, String> e : clickedDataItem.getproduit().entrySet()) {
      
      //  print  e.getKey() e.getValue()
    }