- 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