我是Android开发的新手,我正在尝试将包含两个文本数据和一个图像数据的JSON数据转换为 LISTVIEW 和NOT imageView。我开始意识到所有数据都存储在caridList中,这是一个HashMap。
非常感谢有关如何修复这些错误以及说明的任何建议。 感谢。
答案 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);
}