Я анализирую некоторые данные JSON ключ грузовика (id) и имя (значение). Я помещаю его в HashMap, и я хочу отобразить только значение в ListView
.
Однако я продолжаю получать эту ошибку
HashMap нельзя привести к java.util.Карта$Запись
на этой линии: return (Map.Entry) mArrayList.get(position);
в моем Truckkadapter.
Кто-нибудь видит, что я делаю неправильно?
Вот мясо разбора JSON, добавления его в ArrayList, а затем создания экземпляра адаптера listview.
private List<HashMap<String, String>> listTrucks = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < arrayRecordSet.length(); i++) {
record = arrayRecordSet.getJSONObject(i);
map = new HashMap<>();
map.put("MYKEY", record.getString("SOME TRUCK KEY"));
map.put("MYVALUE", record.getString("SOME TRUCK VALUE"));
listTrucks.add(map);
}
TruckAdapter truckAdapter = new TruckAdapter(listTrucks);
lv.setAdapter(truckAdapter);
Мой Класс Адаптера
public class TruckAdapter extends BaseAdapter {
private final ArrayList mArrayList;
public TruckAdapter(ArrayList<HashMap<String, String>> map){
mArrayList = map;
}
@Override
public int getCount() {
return mArrayList.size();
}
@Override
public Map.Entry<String, String> getItem(int position) {
return (Map.Entry) mArrayList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View result;
if (convertView == null) {
result = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
} else {
result = convertView;
}
Map.Entry<String, String> item = getItem(position);
((TextView) result.findViewById(R.id.text1)).setText(item.getValue());
return result;
}
}
формат JSON
[{"TRKlTruckKey":"1","TRKch10TruckNumber":"Ford"},{"TRKlTruckKey":"2","TRKch10TruckNumber":"Jeep"} ......
Вы определяете an
ArrayList<HashMap<String, String>>
, но вы пытаетесь получитьMap.Entry<String, String>
getItem
метод from. Ваш список должен бытьArrayList<Map.Entry<String, String>>
, и исправить метод загрузки:Но, это может быть очень легко создать POJO грузовика:
Класс Грузовика
Способ Загрузки
Способ Переплавки
Создайте класс с именем
Truck
.Затем конструктор адаптера:
И ваш метод getItem() :