如何在android中使用ListView显示数据?

时间:2016-08-02 08:14:57

标签: android api listview retrofit baseadapter

我想显示来自服务器的数据。我的结果数据显示为[get(0); index(0),价格:3800]。我想用android中的listview显示所有数据。我使用BaseAdapter,CustomAdapter。这里预订对象api。

[
  {
    "order_id": 13,
    "booking_person": 2,
    "booking_datetime": "2016-07-01 22:30:00",
    "total_amount": 2100,
    "order_details": [
      {
        "id": 20,
        "order_id": 13,
        "qty": 1,
        "price": 3800,
        "sub_total": 3800,
      },
      {
        "id": 21,
        "order_id": 13,
        "qty": 1,
        "price": 3250,
        "sub_total": 3250,,
      },
      {
        "id": 124,
        "order_id": 13,
        "qty": 1,
        "price": 2100,
        "sub_total": 2100,            
      }
    ]
  },
]

BookingActivity.java

Bundle bundle = getIntent().getExtras();
Booking booking = new Gson().fromJson(bundle.getString("Booking"), Booking.class);
List<Booking> bookingList = new ArrayList<Booking>();
bookingList.add(booking);
BookingDetailAdapter adapter = new BookingDetailAdapter(BookingActivity.this, bookingList);
lv.setAdapter(adapter);

BookingDetailAdapter.clsas

@Override
    public View getView(int position, View convertView, ViewGroup parent){
Booking booking = list.get(position);
        for (int i = 0; i < list.size(); i++) {
            holder.textView.setText(list.get(i).getOrderDetail().get(0).getPrice().toString());
        }
        return rowView;
}

2 个答案:

答案 0 :(得分:0)

您的适配器填充您拥有的父Booking对象。但是,如果将order_detail列表传递给适配器,则可以看到3行。

BookingDetailAdapter adapter = new BookingDetailAdapter(BookingActivity.this, bookingList.get(0).getOrderDetail());

你不应该在列表中循环。将为列表中的每个项触发getView方法。

OrderDetail detail = list.get(position);
holder.textView.setText(detail.get(position).getPrice().toString());       
return rowView;

答案 1 :(得分:0)

首先,你应该使用Gson在一个对象中解析结果,然后将结果列表传递给ListAdapter,然后在getView中传递:

@Override
public View getView(int position, View convertView, ViewGroup parent){

Booking booking = list.get(position);
    holder.textView.setText(list.get(position).getOrderDetail().get(0).getPrice().toString());

    return rowView;
}