gpt4 book ai didi

java - 如何更改 AsyncTask 中的 ListView?

转载 作者:行者123 更新时间:2023-12-01 15:07:41 27 4
gpt4 key购买 nike

我有一些从服务执行的 AsyncTask 类:

public class DownloadTask extends AsyncTask<Void, Integer, Boolean {

@Override
protected Boolean doInBackground(Void... arg0) {
// do something
publishProgress(i);
}

@Override
protected void onProgressUpdate(Integer ... progress) {
if(textView()!=null) getTextView().setText(i + "%");
}

public void setTextView(TextView textView) {
this.textView = textView;
}

}

和ListAdapter,在方法getView()中,我使用AsyncTask的方法setTextView()在AsyncTask中设置TextView:

public class DownloadTasksAdapter extends BaseAdapter {
private final Activity context;
private DownloadTask[] downloadTasks;

public DownloadTasksAdapter(Activity context, DownloadTask[] downloadTasks) {
this.context = context;
this.downloadTasks = downloadTasks;
}

public int getCount() {
return downloadTasks.length;
}

public DownloadTask getItem(int position) {
return downloadTasks[position];
}

public long getItemId(int position) {
return position;
}

public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getLayoutInflater();
final View rowView = inflater.inflate(R.layout.downloads_listview_row, parent, false);


final TextView progressTxt = (TextView) rowView.findViewById(R.id.downloads_listview_row_progress);


switch (downloadTasks[position].getStatus()) {
case RUNNING:
downloadTasks[position].setTextView(progressTxt);

break;
}

return rowView;
}
}

AsyncTask 从服务执行,但是当我打开包含 ListView 的 Activity 时,AsyncTask 应该更新某些字段,我该怎么做? :(

最佳答案

完成任务调用后

mAdapter.notifyDataSetChanged();

关于java - 如何更改 AsyncTask 中的 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com