- Forum-Beiträge: 67
20.02.2015, 21:03:14 via Website
20.02.2015 21:03:14 via Website
Hallo Leute
Ich habe ein expandable Listview und möchte das nachdem ein Asynctask ausgeführt wurde mit den erworbenen Daten füllen.
mein Code sieht wie folgt aus:
public class Termine extends Activity {
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
private List<Termin> T_Termin = new ArrayList<Termin>();
String feedUrl="http://.......svc.php";
int strDate=0;
DbTask loader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_termine);
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
// get the listview
expListView = (ExpandableListView) findViewById(R.id.expandableListView1);
loader= new DbTask();
loader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
DBTask wird asynchron ausgeführt
Darum wollte ich das View in
protected void onPostExecute(Void result) {
Log.i("Post","vor");
Runnable addMessage = new Runnable() {
@Override
public void run() {
Termin TerminItem;
for(int i=0;i<5;i++)
{
TerminItem= T_Termin.get(i);
Log.i(String.valueOf(i),TerminItem.getDescription());
Log.i(String.valueOf(i),"i");
prepareListData();
}
}
};
new Thread(addMessage).start();
super.onPostExecute(result);
}
ausführen
private void prepareListData() {
// Adding child data
listDataHeader.add("Januar");
listDataHeader.add("Februar");
listDataHeader.add("Maerz");
// Adding child data
List<String> Januar = new ArrayList<String>();
Januar.add("HALLO");
List<String> Februar = new ArrayList<String>();
Februar.add("The Conjuring");
List<String> Maerz = new ArrayList<String>();
Maerz.add("2 Guns");
listDataChild.put(listDataHeader.get(0), Januar); // Header, Child data
listDataChild.put(listDataHeader.get(1), Februar);
listDataChild.put(listDataHeader.get(2), Maerz);
listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
// setting list adapter
expListView.setAdapter(listAdapter);
}
Dabei erhalte ich folgende Fehlermeldeung, dass ich den View nur
im ursprünglichen Task geändert werden kann.
E/AndroidRuntime(7871): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:5594)
Wie kann ich das besser anstellen ?
Danke und Gruß
Hauke
— geändert am 20.02.2015, 21:07:04
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.