如何在ListView
?
现在我只能一次检索并显示一个数据(Item),我想检索多行数据(Items)并在ListView
中显示所有数据。
在这种情况下,我使用用户名来检索他/她在数据库中的优惠券。因此,我只能显示一张优惠券,我想知道如何在ListView
中显示多张优惠券。
protected String doInBackground(String... args) {
// Check for success tag
int success;
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", name));
JSONObject json = jsonParser.makeHttpRequest(
url_all_coupons, "GET", params);
Log.d("Single Voucher Details", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
JSONArray productObj = json
.getJSONArray(TAG_COUPONS); // JSON Array
JSONObject coupons = productObj.getJSONObject(0);
答案 0 :(得分:1)
要填充ListView
我建议您创建一个List
个对象(凭证)并创建一个知道如何在列表中显示任意数量优惠券的Adapter
。首先,您可能需要为优惠券定义一个简单的类(根据您的数据结构重新实现):
public class Coupon {
private String mCouponText;
public Coupon(String text) {
mCouponText = text;
}
public String getCouponText() {
return mCouponText;
}
}
之后,您应该从JSONArray
创建这些对象的列表。有不同的方法,其中之一:
List<Coupon> couponsList = new ArrayList<>();
JSONArray coupons = json
.getJSONArray(TAG_COUPONS); // JSON Array
for (JSONObject coupon : (Iterable<JSONObject>) coupons) {
String text = coupon.get("text");
couponsList.add(new Coupon(text));
}
最后要做的是创建Adapter
并将其设置为ListView
中Activity
的适配器:
ArrayAdapter<Coupon> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, couponsList);
yourListView.setAdapter(adapter);
之后ListView
将使用Adapter
填充其行。您可能希望实现自己的适配器,因为它可以为您提供更多选项,您可以轻松找到如何执行此操作。
<强>更新强>
请考虑使用RecyclerView
。
答案 1 :(得分:0)
让一个类调用它你喜欢的任何东西(让我们称之为Item),这个调用的每个实例都代表Database
中的相关行(或者你获取信息的任何来源)
Item.java may have few instance variable like coupons and userName,
public class Item {
private String coupons;
private String userName;
public String getCoupons() {
return coupons;
}
public void setCoupons(String coupons) {
this.coupons = coupons;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
制作Arraylist
类型Item
,并将此信息提供给自定义ListView
,以显示您想要的详细信息。
ArrayList<Item> list = new ArrayList<>();
for (int i = 0; i < productObj.length(); i++) {
Item item = new Item();
item.setCoupons(""+productObj.getJSONObject(i).getString("CouponKey"));
list.add(item);
}