我想在Android中使用我的列表视图(使用我自己的适配器) 与线程返回的一些数据,该线程从网站获取一些xml内容。 这工作正常!用线程结果填充列表视图项(ArrayList)
列表视图用返回的数组列表对象正确填充。 这就是我做的方式:
//.. function name blabla
ll_wait.setVisibility(View.VISIBLE); // A List View object displaying 'please wait'
lv1=(ListView)findViewById(R.id.listView1);
TextView tv1 = (TextView)findViewById(R.id.tv_Status);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String sortierung = prefs.getString("pref_sortierung", "Entfernung");
String distanz = prefs.getString("pref_distance", "10");
refreshElements refresh = new refreshElements(lat, lon, sortierung, distanz); // its a thread
refresh.start();
while(refresh.isAlive()) {
// HERE IS MY PROBLEM
// HERE IS MY PROBLEM
// HERE IS MY PROBLEM
// HERE IS MY PROBLEM
}
try {
// assigning some data, works correctly
column_names = refresh.getElementColumn(1);
// assigning some data, works correctly
EfficientAdapter adapter = new EfficientAdapter(getApplicationContext());
lv1.setAdapter(adapter);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage() + e.getLocalizedMessage() + e.hashCode() + e.getCause() + e.toString(), Toast.LENGTH_SHORT).show();
}
dialog.dismiss();
ll_wait.setVisibility(View.GONE);
// -... end of function
正如你所看到的,在我的代码,有评论说:“这是我的问题。” 当然,主线程等待(由于while(){...}),因为刷新线程不再是 并且已经结束。 这就是要点!我的完整线程在操作过程中冻结!我试着将listView适配器的东西移动到第二个单独的线程中......但它说没有列表视图适配器可以设置在主线程之外。 冻结后(有时应用程序崩溃...超时我不知道)的数据将被分配给一些静态,这是我自己的EfficientAdapter中使用。
是否有可能等待线程A(刷新线程)的数据并将返回的数组列表作为列表视图内容使用而不冻结整个应用程序?
我希望你明白了,因为我来自德国,而且我的英语并不完美。