ArrayList 对象正在返回 java android 中 ListView 上的一行

Posted

技术标签:

【中文标题】ArrayList 对象正在返回 java android 中 ListView 上的一行【英文标题】:ArrayList object is returing one row on ListView in java android 【发布时间】:2018-05-02 03:04:39 【问题描述】:

我正在尝试在 ArrayList 对象上添加来自 mysql 数据库的对象,但结果只给了我一行 我在我的ListView 上使用自定义适配器,我想我可以使用循环多个对象到ArrayList 对象但我失败了,请帮助我,

我的代码:

String driver_fullname = json.getString("driver_fullname");
String driver_phonenumber = json.getString("driver_phonenumber");
String plate_no = json.getString("plate_no");
String parking_name = json.getString("parking_name");

List<PaymentTiming_Items> getAllDiverDetails = new ArrayList<PaymentTiming_Items>();
PaymentTiming_Items timingItems = new PaymentTiming_Items();
timingItems.setPlateNo(plate_no);
timingItems.setParkingName(parking_name);
timingItems.setDriverFullName(driver_fullname);
getAllDiverDetails.add(timingItems); // store all drivers' info to


if (getAllDiverDetails.size() !=0) 
userList =  new ArrayList<>   (getAllDiverDetails);
listAdapter = new PaymentTiming_ListAdapter(getApplicationContext(), userList);
myList.setAdapter(listAdapter);

【问题讨论】:

你能添加自定义布局xml吗..检查它的高度是否“匹配当前”。如果它 match_parent 将其更改为 wrap_content @Tomin B 自定义布局在自定义适配器中,我认为问题不是布局 添加如何加载多个数据。?代码中没有循环。 @Mohamed,我没有收到错误,问题是我的 json 生成了很多行,但我通过 ArrayList 在 ListView 上只得到了一行 我正在更新我的评论 - 添加用于加载多个数据的代码。 【参考方案1】:

看起来您每次解析对象时都在创建一个 ArrayList。如果我理解正确,您的代码应该是这样的:

// ArrayList will be created only once for a json response.
    List<PaymentTiming_Items> getAllDiverDetails = new ArrayList<PaymentTiming_Items>();

  //Now parse add all elements in json response and add to list.
        for(all items in your jsonResponse List )     
            //Parse fields from json object
            String driver_fullname = json.getString("driver_fullname");
            String driver_phonenumber = json.getString("driver_phonenumber");
            String plate_no = json.getString("plate_no");
            String parking_name = json.getString("parking_name");

            //create object
            PaymentTiming_Items timingItems = new PaymentTiming_Items();
            timingItems.setPlateNo(plate_no);
            timingItems.setParkingName(parking_name);
            timingItems.setDriverFullName(driver_fullname);
            getAllDiverDetails.add(timingItems); // store all drivers' info to
        

        //Now list will have all the items, Add this list to adapter.   
            if (getAllDiverDetails.size() !=0) 
            userList =  new ArrayList<>(getAllDiverDetails);
            listAdapter = new PaymentTiming_ListAdapter(getApplicationContext(), userList);
            myList.setAdapter(listAdapter);
            

【讨论】:

谢谢,你说得对,我每次都在解析一个对象【参考方案2】:

假设您的服务器在JSONArray 中给出结果,说 response 作为字符串尝试以下操作

List<PaymentTiming_Items> getAllDiverDetails = new ArrayList<PaymentTiming_Items>();


        JSONArray jsonArray = new JSONArray(response);
        int size = jsonArray.length();
        if (size > 0)
        
            for (int i = 0; i < size; i++)
            
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String driver_fullname = json.getString("driver_fullname");
                String driver_phonenumber = json.getString("driver_phonenumber");
                String plate_no = json.getString("plate_no");
                String parking_name = json.getString("parking_name");


                PaymentTiming_Items timingItems = new PaymentTiming_Items();
                timingItems.setPlateNo(plate_no);
                timingItems.setParkingName(parking_name);
                timingItems.setDriverFullName(driver_fullname);
                getAllDiverDetails.add(timingItems); // store all drivers' info to
            
        

if (getAllDiverDetails.size() !=0) 
userList =  new ArrayList<>   (getAllDiverDetails);
listAdapter = new PaymentTiming_ListAdapter(getApplicationContext(), userList);
myList.setAdapter(listAdapter);

【讨论】:

【参考方案3】:

您必须使用JSONArrayJSON 获取项目列表。然后用它们填充您的 ArrayList 并传递给您的适配器。

【讨论】:

以上是关于ArrayList 对象正在返回 java android 中 ListView 上的一行的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个方法返回一个包含所有相同对象的 ArrayList? JAVA

在 ArrayList Java 的最后一个元素中查找对象 [重复]

Java删除ArrayList中的重复对象[重复]

Java 将 ArrayList 转换为字符串并返回 ArrayList?

Java排序Arraylist并返回排序列表[重复]

如何确定 ArrayList 迭代器接下来将返回的对象类型?