ListView и JSON
ListView и JSON
Добрый день!
Возникла проблема с формированием 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 пустой? Парсинг проходит корректно....
Возникла проблема с формированием 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 пустой? Парсинг проходит корректно....
Re: ListView и JSON
я вижу как вы заполняете contactList, но я не вижу как вы делаете notifyDataSetChanged() у адаптера
Re: ListView и JSON
Вы хотите сказать, что после определения адаптера: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();
Re: ListView и JSON
нет, я хочу сказать что после того как вы заполняете contactList в onResponse() нужно сделать adapter.notifyDataSetChanged(). Ну и вы видимо не понимаете что запрос выполняется ассинхронно, и то что происходит в onResponse() выполнится уже после того как отработает onCreate().
Re: ListView и JSON
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();
//сначала определяем адаптер
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();
Re: ListView и JSON
klblk, добавил в проект вызов метода adapter.notifyDataSetChanged();
AndroidStudio пишет, что cannot resolve method notifyDataSetChanged()
метод notifyDataSetChanged() является унаследованным от класса BaseAdapter, почему не получается его вызвать?
AndroidStudio пишет, что cannot resolve method notifyDataSetChanged()
метод notifyDataSetChanged() является унаследованным от класса BaseAdapter, почему не получается его вызвать?
Re: ListView и JSON
у ListAdapter его нет, но он есть у SimpleAdapter, замените: ListAdapter->SimpleAdapter
Re: ListView и JSON
klblk, спасибо! всё получилось
Re: ListView и JSON
И еще вопрос.
Настраиваю SwipeRefreshLayout, чтобы можно было потянуть за список ListView и обновить его.
Для обновления списка мне нужно в методе onRefresh(), который требуется реализовать из-за имплементации интерфейса SwipeRefreshLayout.OnRefreshListener:
1. снова сделать запрос с помощью JsonObjectRequest;
2. снова вызвать adapter.notifyDataSetChanged()
Правильно я понимаю?
Настраиваю SwipeRefreshLayout, чтобы можно было потянуть за список ListView и обновить его.
Для обновления списка мне нужно в методе onRefresh(), который требуется реализовать из-за имплементации интерфейса SwipeRefreshLayout.OnRefreshListener:
1. снова сделать запрос с помощью JsonObjectRequest;
2. снова вызвать adapter.notifyDataSetChanged()
Правильно я понимаю?
Re: ListView и JSON
Да. Запрос можете сделать отдельным методом, а адаптер полем класса.
Re: ListView и JSON
Добрый день!
Решил поместить свой список RecyclerView по нажатию кнопки во фрагмент, который находится на главной активити. При нажатии кнопки - пишет "Приложение остановлено". Помогите, плз, что я не так сделал.
код проекта можно посмотреть здесь: https://bitbucket.org/dvshulgin/recycle ... son_volley
Решил поместить свой список RecyclerView по нажатию кнопки во фрагмент, который находится на главной активити. При нажатии кнопки - пишет "Приложение остановлено". Помогите, плз, что я не так сделал.
код проекта можно посмотреть здесь: https://bitbucket.org/dvshulgin/recycle ... son_volley