在 RecyclerView(CardView) 中显示来自 JSON 的数据

问题描述 投票:0回答:1

我有一个

JSON node
显示在
logcat
中,看起来像这样:

jsonData[{"numarProduse":"4","pretTotal":"1138","data":"11-27-2017","numeVanzator":"Clau","numarClient":0,"detaliiCos":{"metodaPlata":"CASH"}}]

但我想从此

JSON response
在另一个活动中只显示其中的3个“numarProduse”:“4”,“pretTotal”:“1138”,“numarClient”:0.

我尝试了其他方法,将数据上传到

Firebase
,然后从
Firebase
检索数据。

这是我的

RecyclerView Adapter

public class CardArrayAdapter  extends RecyclerView.Adapter<CardArrayAdapter.ViewHolder> {
private List<Card> listdata;

public CardArrayAdapter(List<Card> listdata) {
    this.listdata = listdata;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.list_item_card, parent, false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

    Card vanzatorProduse = listdata.get(position);

    holder.txtViewNumarCumparator.setText(vanzatorProduse.getProdusId());
    holder.listaProduse.setText(vanzatorProduse.getQty());
    holder.sumaProduse.setText(vanzatorProduse.getSubTotal());
}
@Override
public int getItemCount() {
    return listdata.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

    public TextView txtViewNumarCumparator;
    public TextView listaProduse;
    public TextView sumaProduse;

    public ViewHolder(View itemView) {
        super(itemView);

        txtViewNumarCumparator = (TextView) itemView.findViewById(R.id.txtViewNumarCumparator);
        listaProduse = (TextView) itemView.findViewById(R.id.listaProduse);
        sumaProduse = (TextView) itemView.findViewById(R.id.sumaProduse);
    }
}
}

我为

CardView
做了我的布局,以及带有 getter 和 setter 的对象类。

public class Card implements Serializable {
public String produsId;
public String subTotal;
public String qty;

public Card(){}

public Card(String produsId, String subTotal, String qty) {
    this.produsId = produsId;
    this.subTotal = subTotal;
    this.qty = qty;
}

public String getProdusId() {
    return produsId;
}

public void setProdusId(String produsId) {
    this.produsId = produsId;
}

public String getSubTotal() {
    return subTotal;
}

public void setSubTotal(String subTotal) {
    this.subTotal = subTotal;
}

public String getQty() {
    return qty;
}

public void setQty(String qty) {
    this.qty = qty;
}
}

这是我尝试从中检索数据的地方

Firebase

myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            list = new ArrayList<>();

            for (DataSnapshot snapshot : dataSnapshot.getChildren()){

                VanzatorProduse produse = snapshot.getValue(VanzatorProduse.class);
                Card listdata = new Card();
                String id = produse.getProdusId();
                String qty = String.valueOf(produse.getQty());
                String suma = String.valueOf(produse.getSubTotal());

                listdata.setProdusId(id);
                listdata.setQty(qty);
                listdata.setSubTotal(suma);
                list.add(listdata);

            }
            CardArrayAdapter recycler = new CardArrayAdapter(list);
            RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(VanzatorActivity.this);
            recyclerview.setLayoutManager(layoutmanager);
            recyclerview.setItemAnimator( new DefaultItemAnimator());
            recyclerview.setAdapter(recycler);
        }

但是不起作用,我得到两列,其中显示 0。我不知道下一步该怎么做,我被封锁了。

java android json android-recyclerview
1个回答
0
投票

您可以为您的列表项创建一个带有 setter getter 的 bean 类,并且 bean 类应该实现 parcelable,以便您可以将 bean 对象发送到其他活动。对于回收器视图,您使用相同 bean 类型的适配器,并在从服务器加载数据后设置该适配器。

© www.soinside.com 2019 - 2024. All rights reserved.