我需要从我的asynctask更新textView。我有一个listview的自定义适配器,我希望每个条目都有倒计时。我将从我的适配器启动每个条目的asynctask。如何从asynctask每秒更新textview?
感谢您的帮助:)
答案 0 :(得分:1)
如果你发布你的代码,我可以给你一个更好的答案。但是,定期更新视图的常用方法是使用Handlers。
private final Handler mHandler = new Handler(); //intialize in main thread
public void test() {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mTextView.setText("hello");
}
}, 1000);
}
答案 1 :(得分:0)
您可以执行以下操作(这将每隔一秒向列表视图添加一个条目)。我使用普通的ArrayAdapter来添加字符串。您可以使用自定义适配器执行类似的操作。 publishProgress()方法基本上触发onProgressUpdate()方法,该方法挂钩到UI线程并显示添加的元素。:
class AddStringTask扩展了AsyncTask {
@Override
protected Void doInBackground(Void... params) {
for(String item : items) {
publishProgress(item);
SystemClock.sleep(1000);
}
return null;
}
@Override
protected void onProgressUpdate(String... item) {
adapter.add(item[0]);
}
@Override
protected void onPostExecute(Void unused) {
Toast.makeText(getActivity(), "Done adding string item", Toast.LENGTH_SHORT).show();
}
}