Ich erhalte einen IllegalStateException -Fehler nach der Aktualisierung einer ListansichtJava

Java-Forum
Anonymous
 Ich erhalte einen IllegalStateException -Fehler nach der Aktualisierung einer Listansicht

Post by Anonymous »

Ich verwende eine ListView und einen Basisadapter. In einem separaten Thread lade ich Daten aus dem Netzwerk herunter und füge sie der ArrayList hinzu. Nach der Aktualisierung verwende ich adapter.notifyDataSchanged (); Und ich bekomme einen Fehler. So beheben Sie den IllegalStateException-Fehler? ListView erhielt keine Benachrichtigung. Stellen Sie sicher, dass der Inhalt Ihres Adapters
nicht aus einem Hintergrund -Thread geändert wird, sondern nur aus dem UI -Thread. Stellen Sie sicher, dass Ihr Adapter
notifyDataSchanged () aufgerufen wird, wenn sich der Inhalt ändert. [In
ListView (2131296554, Class Android.widget.ListView) mit Adapter (Klasse
RU.App.vksearch.leveladapter)] unter
android.widget.Listview.Layoutchildren(listview.java:1721) at
und undwidget.abslistView.ontouchup(abSlistView.java:4094) unter
und undwidget.abslistView.ontouchEvent(abslistView.java:3886) unter
android.view.dispattouch(vevent(view. />android.view.viewgroup.dispatchtransformedToucheEnvent(viewGroup.java:3054)
at android.view.viewgroup.dispatchTouchevent (viewGroup.java:2741) < /p>
< /blockquote>

Code: Select all

 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();
}

}
};
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post