Только что реализовал JSONArrayAdapter для получения данных JSON в ListView. Он расширяет android.widget.SimpleAdapter
и работает так же, как его родительский класс.
У него есть только один статический метод, который преобразует JSONArray
в List<Map<String, String>>
, который используется для инициализации SimpleAdapter
.
import ...
public class JSONArrayAdapter extends SimpleAdapter {
public JSONArrayAdapter(Context context, JSONArray jsonArray,
int resource, String[] from, int[] to) {
super(context, getListFromJsonArray(jsonArray), resource, from, to);
}
// method converts JSONArray to List of Maps
protected static List<Map<String, String>> getListFromJsonArray(JSONArray jsonArray) {
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map;
// fill the list
for (int i = 0; i < jsonArray.length(); i++) {
map = new HashMap<String, String>();
try {
JSONObject jo = (JSONObject) jsonArray.get(i);
// fill map
Iterator iter = jo.keys();
while(iter.hasNext()) {
String currentKey = (String) iter.next();
map.put(currentKey, jo.getString(currentKey));
}
// add map to list
list.add(map);
} catch (JSONException e) {
Log.e("JSON", e.getLocalizedMessage());
}
}
return list;
}
}
Просто используйте его так же, как и встроенные адаптеры Android, такие как SimpleCursorAdapter, с отображением строк (ключей ваших данных json) в целые числа (представления строк списка просмотра).
Для получения дополнительной информации см. Документацию SimpleAdapter .