【发布时间】:2014-02-21 16:12:59
【问题描述】:
我的问题是我正在从 Web 服务加载一些数据,我想通知用户我正在加载数据。因此,我正在使用 AsyncTask 但我的 Datagetter 方法不起作用,我不知道为什么。这是我的课:
public class HaberlerDynamic extends Activity {
ArrayList<ArrayList> result = new ArrayList<ArrayList>();
ListView list;
DynamicListView haber ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.kurumsal_menu);
list = (ListView) findViewById(R.id.list);
new GetTask(this ,"gereksiz").execute();
}
class GetTask extends AsyncTask<Object, Void, Void> {
Context context;
ProgressDialog mDialog ;
GetTask(Context context, String userid) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mDialog = new ProgressDialog(context);
mDialog.setMessage("Yükeniyor...");
mDialog.show();
}
@Override
protected Void doInBackground(Object... params) {
// here you can get the details from db or web and fetch it..
Log.i("HaberlerDynamicAs","Request yapmadan once");
try {
//this part does not work
result = MethodInfoGetter.methodRequest("HaberGetir", "", "");
//this part does not work
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
haber = new DynamicListView( HaberlerDynamic.this , result , "Haberler" );
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
mDialog.dismiss();
list.setAdapter( haber );
}
}
}
如果我不使用 AsyncTask 并在 onCreate 中调用该部分,它会完美运行。
编辑:
方法 InfoGetter.methodRequest("HaberGetir", "", "");这个方法里面有它自己的异步方法。会有影响吗?
EDIT2:
移动方法 list.setAdapter( haber );从doInBackground 到onPostExecute 仍然没有任何改变。
【问题讨论】:
-
list.setAdapter( haber );从doInbackground更新 ui 是错误的 -
我应该把代码放在哪里?
-
我把这段代码“list.setAdapter(haber);”进入 onPostExecute 但它也没有工作。
-
@EsatTaha“不起作用”指定什么不起作用以及问题所在。你有例外吗?崩溃了?
-
不,我没有任何异常或任何崩溃。但进度对话框永远不会消失。