提问者:小点点

如何使用hashmap从数据库中检索数据?


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

我想这样表现出来

这是我保存它的方式:

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

这是我从第一个活动(回收视图)发送数据的方式:

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 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;
    }

}

我如何保存数据的表格

更新2:

这是回收器视图的适配器:

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

这是活动细节:

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"));
 }}

共1个答案

匿名用户

根据你的问题,我假设produit下的键是随机的。所以当你检索订单详细信息时,produit将是一个Hashmap。将produit声明为Hashmap

您可以打印这些键和值。

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