Как преобразовать JSONArray в ListView? - PullRequest
4 голосов
/ 25 февраля 2012

У меня есть код, который выполняет следующие действия:

  1. Подключение к веб-службе через HttpClient в файл PHP
  2. Возвращает результат запроса SQL
  3. Возвращаетформат представляет собой jArray (JSONArray)

for(int i=0; i < jArray.length() ; i++) {
    json_data = jArray.getJSONObject(i);
    int id=json_data.getInt("id");
    String name=json_data.getString("name");
    Log.d(name,"Output");
}

Когда я смотрю на LogCat, я вижу все «имена» запроса,Каждая запись печатается.Мне просто нужно подключить эти результаты в ListView.Как я могу сделать это?

PS - у меня нет отдельного класса для ArrayAdapter.Может ли это быть причиной?

Ответы [ 4 ]

8 голосов
/ 25 февраля 2012

Если вы просто хотите отобразить список textView, вам не нужно ничего переопределять, вы можете просто добавить все элементы в arrayList и использовать arrayAdapter.

Поместите представление списка в ваш xml с именем android: list и затем создайте свой arrayAdapter с textView, который вы хотите использовать.

После этого все, что вам нужно сделать, это вызвать setListAdapter (mArrayAdapter) и он должен заполнить ваш список.

ArrayList<String> items = new ArrayList<String>();
for(int i=0; i < jArray.length() ; i++) {
    json_data = jArray.getJSONObject(i);
    int id=json_data.getInt("id");
    String name=json_data.getString("name");
    items.add(name);
    Log.d(name,"Output");
}

ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(this,  
           android.R.layout.simple_expandable_list_item_1, items));
setListAdapter(mArrayAdapter)

надеюсь, это поможет!

1 голос
/ 31 марта 2014

Я не люблю переназначать данные, пока они у меня уже есть в массиве JSON, так что это мой код ... он достаточно прост для меня .... надеюсь, это поможет

1 голос
/ 25 февраля 2012

вы можете взглянуть на эту веб-страницу, на которой есть пример, чтобы сделать именно то, что вы ищете: http://p -xr.com / android-tutorial-how-to-parse-read-json-data-into-a-android-listview /

По сути, внутри цикла for, где вы печатаете имена, вы должны загружать список массивов, содержащий значения, которые вы хотели бы вставить в список позже.,Обратите внимание, что в примере используется следующее:

ArrayList< HashMap < String, String > > mylist = new ArrayList < HashMap < String, String > > ();

И у вас есть целое число и строка для добавления в структуру, чтобы вы могли просто превратить этот идентификатор в строку и решить проблему.После этого вы можете использовать адаптер списка без необходимости создания отдельного класса:

ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main, new String[] { "name", "id" }, new int[] { R.id.item_title, R.id.item_subtitle });

Где «name» и «id» будут ключами на вашей карте для имени изначения id, возвращаемые json и item_title, item_subtitle представления для «адаптации» текста.

Надеюсь, я был достаточно ясен, взгляните на пример в любом случае, он довольно простой.

0 голосов
/ 25 февраля 2012

Поместите данные в массив и используйте ArrayAdapter для привязки данных к элементам списка.

См. Статью на:

http://www.josecgomez.com/2010/05/03/android-putting-custom-objects-in-listview/

...