使用自定义适配器将HashMap数据添加到listView

时间:2015-07-24 19:40:28

标签: java android listview android-listview

我是Android开发的新手,我正在尝试将包含两个文本数据和一个图像数据的JSON数据转换为 LISTVIEW 和NOT imageView。我开始意识到所有数据都存储在caridList中,这是一个HashMap。

非常感谢有关如何修复这些错误以及说明的任何建议。 感谢。

1 个答案:

答案 0 :(得分:1)

你在这个片段中犯了一些错误。

首先,无需使用Map存储数据

您应该创建POJO或其他对象来存储您的数据。

创建名为 CarData

的类
public class CarData {

    public String carId;
    public String carVin;
    public String modelImg;

    public CarData(String carId, String carVin, String modelImg) {
        this.carId = carId;
        this.carVin = carVin;
        this.modelImg = modelImg;
    }
}

接下来没有字段:

//Hashmap for ListView
ArrayList<HashMap<String, Object>> caridList;

使用

List<CarData> carDataList = new ArrayList<CarData>();

AsyncTask 中,而不是将字符串放到地图上,您应该创建新的 CarData 并添加到列表

CarData carData = new CarData(car_id, car_vin, model_img);
carDataList.add(carData);

您的ArrayAdapter类声明应如下所示:

public class CustomListViewAdapter extends ArrayAdapter<CarData> 

将您的数据保存到列表中:

private List<CarData> list;

getView 中:

CarData item = getItem(position);

....

holder.car_id.setText(item.carId);
holder.car_vin.setText(item.carVin);

要将图像加载到ImageView中,请检查Picasso或Glide

修改

替换它:

  for (int i = 0; i < carid.length(); i++) {
      JSONObject c = carid.getJSONObject(i);
      String car_id = c.getString(TAG_CARID);
      Log.d("car_id", car_id);

      String car_vin = c.getString(TAG_CARVIN);
      Log.d("car_vin", car_vin);

      String model_img = c.getString(TAG_IMG);
      Log.d("model_img", model_img);

      //Hashmap for single match
      HashMap<String, Object> matchGetCars = new HashMap<String, Object>();
      //Log.v("Item 3", item.toString());
      //Adds each child node to HashMap key => value
      matchGetCars.put(TAG_CARID, car_id);
      matchGetCars.put(TAG_CARVIN, car_vin);
      matchGetCars.put(TAG_IMG, model_img);
      caridList.add(matchGetCars);
      Log.v("CaridList", caridList.toString());
}

用这个:

for (int i = 0; i < carid.length(); i++) {
    JSONObject c = carid.getJSONObject(i);
    String car_id = c.getString(TAG_CARID);
    String car_vin = c.getString(TAG_CARVIN);
    String model_img = c.getString(TAG_IMG);
    CarData carData = new CarData(car_id, car_vin, model_img);
    carDataList.add(carData);
}