Я использую ListView и BaseAdapter. В отдельном потоке я загружаю данные из сети и добавляю их в ArrayList. После обновления я использую adapter.notifydatasetchanged (); И я получаю ошибку. Как исправить ошибку allodalStateException? < /P>
Исключение в обратном ответре MessageQue ListView не получил уведомление. Убедитесь, что содержание
вашего адаптера не изменяется из фонового потока, а
только из потока пользовательского интерфейса. Убедитесь, что ваш адаптер вызывает
notifydatasetchant () при изменении его содержания. [in
listView (2131296554, класс android.widget.listview) с адаптером (класс
ru.app.vksearch.leveladapter)] at
android.widget.listview.layoutchildren(listview.java:1721) at
android.widget.abslistview.ontouchup(abslistview.java:4094) at
android.view.view.dispatchtevent(view.java:13)) at at at at at at at at at at at. /> android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:3054)
at android.view.viewgroup.dispatchtouchevent (viewgroup.java:2741) < /p>
< /blockquote>
ArrayList title_ = new ArrayList();
ArrayList photo_ = new ArrayList();
ArrayList date_ = new ArrayList();
ArrayList time_ = new ArrayList();
ArrayList count_ = new ArrayList();
LevelAdapterFavor adapter;
ListView listView;
offset
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = (ListView) findViewById(R.id.listView);
adapter = new LevelAdapterFavor(this, title_, photo_, time_, count_, date_);
listView.setAdapter(adapter);
video();
}
public void video() {
VKRequest r = new VKRequest("video.search",VK.getApiVersion());
r.addParam("q","google");
r.addParam("offset", 0);
r.addParam("count",200);
VK.execute(r, new VKApiCallback() {
@Override
public void fail(@NonNull Exception e) {
}
@Override
public void success(JSONObject response) {
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(new Runnable() {
public void run() {
try {
JSONObject responseObject = response.getJSONObject("response");
JSONArray responseArray = responseObject.getJSONArray("items");
offset = offset + responseArray.length();
for(int i = 0; i < responseArray.length(); i++) {
JSONObject item = responseArray.getJSONObject(i);
String title = item.getString("title");
String photo = item.getString("photo_320");
long duration = item.getLong("duration");
long date = item.getLong("date");
String count = item.getString("views");
Date date_1 = new Date(date*1000L);
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
String formattedDate = sdf.format(date_1);
String time = 989999999999;
title_.add(title);
photo_.add(photo);
date_.add(formattedDate);
time_.add(time);
count_.add(count);
}
} catch (Exception ignored) {
}
}});
Future future = service.submit(new Runnable() {
public void run() {
if(String.valueOf(responseArray).contains("[]")){
offset = 0;
handler_lenta.sendEmptyMessage(1);
}else{
handler_lenta.sendEmptyMessage(2);
}
}
});
try{
future.get();
} catch (InterruptedException ignored) {
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
});
Handler handler_lenta = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
if(msg.what == 1){
poisk.setVisibility(View.VISIBLE);
adapter.notifyDataSetChanged();
}
if(msg.what == 2){
video();
adapter.notifyDataSetChanged();
}
}
};
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... a-listview
Я получаю ошибку allodalstateException после обновления листика ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1758618945
Anonymous
Я использую ListView и BaseAdapter. В отдельном потоке я загружаю данные из сети и добавляю их в ArrayList. После обновления я использую adapter.notifydatasetchanged (); И я получаю ошибку. Как исправить ошибку allodalStateException? < /P>
Исключение в обратном ответре MessageQue ListView не получил уведомление. Убедитесь, что содержание
вашего адаптера не изменяется из фонового потока, а
только из потока пользовательского интерфейса. Убедитесь, что ваш адаптер вызывает
notifydatasetchant () при изменении его содержания. [in
listView (2131296554, класс android.widget.listview) с адаптером (класс
ru.app.vksearch.leveladapter)] at
android.widget.listview.layoutchildren(listview.java:1721) at
android.widget.abslistview.ontouchup(abslistview.java:4094) at
android.view.view.dispatchtevent(view.java:13)) at at at at at at at at at at at. /> android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:3054)
at android.view.viewgroup.dispatchtouchevent (viewgroup.java:2741) < /p>
< /blockquote>
ArrayList title_ = new ArrayList();
ArrayList photo_ = new ArrayList();
ArrayList date_ = new ArrayList();
ArrayList time_ = new ArrayList();
ArrayList count_ = new ArrayList();
LevelAdapterFavor adapter;
ListView listView;
offset
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = (ListView) findViewById(R.id.listView);
adapter = new LevelAdapterFavor(this, title_, photo_, time_, count_, date_);
listView.setAdapter(adapter);
video();
}
public void video() {
VKRequest r = new VKRequest("video.search",VK.getApiVersion());
r.addParam("q","google");
r.addParam("offset", 0);
r.addParam("count",200);
VK.execute(r, new VKApiCallback() {
@Override
public void fail(@NonNull Exception e) {
}
@Override
public void success(JSONObject response) {
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(new Runnable() {
public void run() {
try {
JSONObject responseObject = response.getJSONObject("response");
JSONArray responseArray = responseObject.getJSONArray("items");
offset = offset + responseArray.length();
for(int i = 0; i < responseArray.length(); i++) {
JSONObject item = responseArray.getJSONObject(i);
String title = item.getString("title");
String photo = item.getString("photo_320");
long duration = item.getLong("duration");
long date = item.getLong("date");
String count = item.getString("views");
Date date_1 = new Date(date*1000L);
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
String formattedDate = sdf.format(date_1);
String time = 989999999999;
title_.add(title);
photo_.add(photo);
date_.add(formattedDate);
time_.add(time);
count_.add(count);
}
} catch (Exception ignored) {
}
}});
Future future = service.submit(new Runnable() {
public void run() {
if(String.valueOf(responseArray).contains("[]")){
offset = 0;
handler_lenta.sendEmptyMessage(1);
}else{
handler_lenta.sendEmptyMessage(2);
}
}
});
try{
future.get();
} catch (InterruptedException ignored) {
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
});
Handler handler_lenta = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
if(msg.what == 1){
poisk.setVisibility(View.VISIBLE);
adapter.notifyDataSetChanged();
}
if(msg.what == 2){
video();
adapter.notifyDataSetChanged();
}
}
};
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79772406/i-get-an-illegalstateexception-error-after-updating-a-listview[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия