【问题标题】:Display data from JSON inside RecyclerView(CardView)在 RecyclerView(CardView) 中显示来自 JSON 的数据
【发布时间】:2017-11-28 12:33:27
【问题描述】:

我有一个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。我不知道下一步该怎么做,我被阻止了。

【问题讨论】:

  • 你的json响应为真
  • 现在你必须实现困难的东西。我建议您使用 getter 和 setter 为 Json 响应创建一个类,这样您就可以在需要时调用信息。您还必须创建一个自定义列表视图(另一个 XML 设计),这将是您列表中每个项目的设计。然后是一个适配器类,它将与您的列表视图一起工作并在必要时设置值。这很复杂,但我建议您遵循自定义列表视图的教程。
  • 我该如何为他们设定价值?
  • 请看一下,我做了一些改动。

标签: java android json android-recyclerview


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    相关资源
    最近更新 更多