ListView и JSON

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
shud
Сообщения: 7
Зарегистрирован: 17 дек 2015, 06:24

ListView и JSON

Сообщение shud » 17 дек 2015, 06:35

Добрый день!
Возникла проблема с формированием ListView из запроса JSON (запрос получен используя volley) - формируется пустой список, или он вообще не формируется, т.е. в main_activity, которая содержит ListView пусто.
Кратко суть, распарсивается по url-ссылке json-файл, используя библиотеку volley. Структура файла следующая:
{"staff":[
{"fio":"Иванов Иван Иванович",
"birthday":"01 января"
"phone":"123456"
},
{"fio":"Сергеев Сергей Сергеевич",
"birthday":"02 февраля"
"phone":"654321"
},...
код проекта можно посмотреть здесь: https://bitbucket.org/dvshulgin/volley_json

Подскажите, плз, почему ListView пустой? Парсинг проходит корректно....

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: ListView и JSON

Сообщение klblk » 17 дек 2015, 07:04

я вижу как вы заполняете contactList, но я не вижу как вы делаете notifyDataSetChanged() у адаптера

shud
Сообщения: 7
Зарегистрирован: 17 дек 2015, 06:24

Re: ListView и JSON

Сообщение shud » 17 дек 2015, 07:24

klblk писал(а):я вижу как вы заполняете contactList, но я не вижу как вы делаете notifyDataSetChanged() у адаптера
Вы хотите сказать, что после определения адаптера:
ListAdapter adapter = new SimpleAdapter(
MainActivity.this, contactList,
R.layout.list_item, new String[]{TAG_FIO, TAG_BIRTHDAY,
TAG_PHONE}, new int[]{R.id.fio,
R.id.birthday, R.id.phone});

lv.setAdapter(adapter);


не хватает строчки:
adapter.notifyDataSetChanged();

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: ListView и JSON

Сообщение klblk » 17 дек 2015, 07:34

нет, я хочу сказать что после того как вы заполняете contactList в onResponse() нужно сделать adapter.notifyDataSetChanged(). Ну и вы видимо не понимаете что запрос выполняется ассинхронно, и то что происходит в onResponse() выполнится уже после того как отработает onCreate().

shud
Сообщения: 7
Зарегистрирован: 17 дек 2015, 06:24

Re: ListView и JSON

Сообщение shud » 17 дек 2015, 08:20

klblk, спасибо большое! Действительно, не понимал, а соответственно не учел, что запрос выполняется ассинхронно. Вечером попробую исправить проект и отпишусь. Получается нужно сделать так?
//сначала определяем адаптер
ListAdapter adapter = new SimpleAdapter(
MainActivity.this, contactList,
R.layout.list_item, new String[]{TAG_FIO, TAG_BIRTHDAY,
TAG_PHONE}, new int[]{R.id.fio,
R.id.birthday, R.id.phone});
lv.setAdapter(adapter);

//затем
....
public void onResponse(JSONObject response) {
try {
....
for .....{
.....
contactList.add(contact);
}
adapter.notifyDataSetChanged();

shud
Сообщения: 7
Зарегистрирован: 17 дек 2015, 06:24

Re: ListView и JSON

Сообщение shud » 17 дек 2015, 20:03

klblk, добавил в проект вызов метода adapter.notifyDataSetChanged();
AndroidStudio пишет, что cannot resolve method notifyDataSetChanged()

метод notifyDataSetChanged() является унаследованным от класса BaseAdapter, почему не получается его вызвать?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: ListView и JSON

Сообщение klblk » 18 дек 2015, 05:32

у ListAdapter его нет, но он есть у SimpleAdapter, замените: ListAdapter->SimpleAdapter

shud
Сообщения: 7
Зарегистрирован: 17 дек 2015, 06:24

Re: ListView и JSON

Сообщение shud » 20 дек 2015, 14:31

klblk, спасибо! всё получилось

shud
Сообщения: 7
Зарегистрирован: 17 дек 2015, 06:24

Re: ListView и JSON

Сообщение shud » 23 дек 2015, 07:15

И еще вопрос.

Настраиваю SwipeRefreshLayout, чтобы можно было потянуть за список ListView и обновить его.
Для обновления списка мне нужно в методе onRefresh(), который требуется реализовать из-за имплементации интерфейса SwipeRefreshLayout.OnRefreshListener:

1. снова сделать запрос с помощью JsonObjectRequest;
2. снова вызвать adapter.notifyDataSetChanged()

Правильно я понимаю?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: ListView и JSON

Сообщение klblk » 23 дек 2015, 07:26

Да. Запрос можете сделать отдельным методом, а адаптер полем класса.

shud
Сообщения: 7
Зарегистрирован: 17 дек 2015, 06:24

Re: ListView и JSON

Сообщение shud » 08 янв 2016, 12:15

Добрый день!
Решил поместить свой список RecyclerView по нажатию кнопки во фрагмент, который находится на главной активити. При нажатии кнопки - пишет "Приложение остановлено". Помогите, плз, что я не так сделал.

код проекта можно посмотреть здесь: https://bitbucket.org/dvshulgin/recycle ... son_volley

Ответить