遇到一個需求,一鍵開始上傳,這樣就要更新待上傳文件列表中的狀態圖片,比如從暫停圖片換爲開始圖片。適配器如下:
class LvAdapter extends BaseAdapter{
ViewHolder vh;
@Override
public int getCount() {
return fileDataList.size();
}
@Override
public Object getItem(int position) {
return fileDataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.lvuploaditem, null);
vh = new ViewHolder();
vh.tv1 = (TextView) convertView.findViewById(R.id.textView1);
vh.tv2 = (TextView) convertView.findViewById(R.id.textView2);
vh.tv3 = (TextView) convertView.findViewById(R.id.textView3);
vh.ib = (ImageView) convertView.findViewById(R.id.ib);
convertView.setTag(vh);
} else{
vh = (ViewHolder) convertView.getTag();
}
vh.tv1.setText(fileDataList.get(position).getProjectName() + "-->"+fileDataList.get(position).getActionFormName());
vh.tv2.setText(fileDataList.get(position).getFileName());
vh.tv3.setText(fileDataList.get(position).getTime());
<span style="color:#ff0000;">vh.ib.setImageResource(resId_iv);</span>
return convertView;
}
class ViewHolder{
TextView tv1;
TextView tv2;
TextView tv3;
ImageView ib;
}
}
要更新listview,adapter.notifyDataSetChanged();這句話是必須的,但要更新圖片,我還是有點茫然。
以前都是更新數據,比如fileDataList 中的數據發生改變,adapter.notifyDataSetChanged()直接listview就數據更新了。
.................................
後來,我一想,你妹的,fileDataList 並沒有特別之處,一個普通的成員變量,那就在弄個吧。
好吧,
int resId_iv;
然後按下一鍵上傳所有,
resId_iv = R.drawable.media_stop;//想換什麼圖換什麼圖
adapter.notifyDataSetChanged();//更新
完事!
當然,這是所有條目齊刷刷的更新圖片,想單獨更新,就在單獨條目點擊事件裏
lv.setOnItemClickListener(new OnItemClickListener() {
@Override public void onItemClick(AdapterView < ?>arg0, View arg1, int arg2, long arg3) {
ImageView iv = (ImageView) arg1.findViewById(R.id.ib);
uploading = !uploading;
if (uploading) {
iv.setImageResource(R.drawable.media_stop);
ToastUtils.showToast(getApplicationContext(), "開始上傳");
if (MainFrameBasicActivity.uploadService == null) {
ToastUtils.showToast(getApplicationContext(), "上傳任務失敗");
} else {
MainFrameBasicActivity.uploadService.postActionFileInService(getApplicationContext(), imgList, RequestURL, params);
}
} else {
iv.setImageResource(R.drawable.media_play);
ToastUtils.showToast(getApplicationContext(), "停止上傳");
}
}
});