如何在listview中显示mysql的多行数据?

时间:2015-12-16 06:55:38

标签: android listview android-listview

如何在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);

2 个答案:

答案 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并将其设置为ListViewActivity的适配器:

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