【发布时间】:2011-04-02 11:49:26
【问题描述】:
在我的应用程序中,我有一个用户可以登录的屏幕。登录详细信息被发送到网络,一些数据被下载到微调器中。我为应用程序实现了一个进度对话框,以便应用程序在访问网络和下载时不会锁定。进度对话框似乎工作正常,但任务完成后它似乎并没有更新我的微调器 - 我实际上必须单击微调器才能显示已下载的数据。 notifyDataSetChanged() 方法似乎不起作用,如果我没有任何线程,它通常会默认显示第一项。这是一些代码。
启动进度对话框的代码
pd = ProgressDialog.show(this, "Logging in...", "Please wait", true, false); Thread thread = new
Thread(this); thread.start();
run 方法 - 在这里更改了微调器数据集
public void run() {
myMethodThatDoesStuff();
handler.sendEmptyMessage(0);
}
和处理程序
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
pd.dismiss();
}
};
最后,myMethodThatDoesStuff 中更改微调器数据集的位
aa=new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item);
//ADDING SOME DATA HERE
//DATA ADDED
spin=(Spinner)findViewById(R.id.spinner);
spin.setOnItemSelectedListener(this);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(aa);
aa.notifyDataSetChanged();
注意:没有线程这绝对可以正常工作
【问题讨论】:
标签: android multithreading progress