Я получаю ошибку allodalstateException после обновления листикаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Я получаю ошибку allodalstateException после обновления листика

Сообщение 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();
}

}
};
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... a-listview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»