gpt4 book ai didi

java - 使用自定义适配器将 HashMap 数据映射到 listView

转载 作者:行者123 更新时间:2023-11-30 02:00:08 26 4
gpt4 key购买 nike

我是 Android 开发的新手,我正在尝试将 JSON 数据(包括两个文本数据和一个图像数据)获取到 LISTVIEW 而不是 imageView。我开始意识到所有数据都存储在 caridList 中,它是一个 HashMap。

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

最佳答案

你在这段代码中犯了一些错误。

首先不需要使用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 中而不是将字符串放入 Map,您应该创建新的 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);
}

关于java - 使用自定义适配器将 HashMap 数据映射到 listView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com