我开发了一个基于服务器连接的应用程序,并从服务器下载内容。用于通知下载文件pr的进度以便更改包含它的片段中一个Listview的行项目的视图我在我的自定义适配器中提供了一些代码以保留 convertView 对象:
public View getView(int position, View view, ViewGroup parent) {
// TODO Auto-generated method stub
View convertView = view;
final MusicDownloadStructure data = getItem(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.tab2_online_store_row_item,
parent, false);
data.view = convertView;
} else {
data.view = convertView;
}
}
运行asynctask线程时,我使用此对象将Listview行项的视图更改为:
protected void onProgressUpdate(Long... values) {
if (mdata.view != null) {
TextView statusTextView = (TextView) mdata.view
.findViewById(com.example.app.R.id.tab2_downloadProgressText);
statusTextView.setText(String.Valueof(values[0]));
}
问题:
1-当asynctask执行Textview时不改变尽管onProgressUpdate应该在UI线程上运行
2 - 有时候这个元素的文本开始改变其他行影响这个改变!
anynody可以帮忙吗?
提前致谢
答案 0 :(得分:1)
尝试拨打notifyDataSetChanged
:
void onProgressUpdate(Long... values) {
if (mdata.view != null) {
TextView statusTextView = (TextView) mdata.view
.findViewById(com.example.app.R.id.tab2_downloadProgressText);
statusTextView.setText(String.Valueof(values[0]));
myListView.notifyDataSetChanged(); //or simply notifyDataSetChanged if your Async inside adapter
}