我需要一些帮助,执行休假任务。任何人都可以帮忙解决这个问题吗?
我有列表视图。每行包含
加载适配器我通过List。从哪里显示标题,每行的副标题。
这是myadapter代码,为每一行生成视图。
我的问题是。在运行时,当我输入下载按钮时,它将进入downloadQueue进行下载,并更新相应的进度条。但是Whwn正在滚动列表视图。进度条可见其他行而不是我开始下载的当前行。有人可以告诉我,如何绑定视图和状态对象,以便它不会错误地放置进度条。
`
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos= position;
final StateViewHolder viewHolder;
final State state = stateList.get(pos) ;
if (convertView == null) {
inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.adapter_view, null);
TextView title = (TextView) convertView.findViewById(R.id.text);
TextView subTitle = (TextView) convertView.findViewById(R.id.subText);
TextView progresstext = (TextView) convertView.findViewById(R.id.progressText);
ProgressBar progressBar = (ProgressBar) convertView.findViewById(R.id.progress);
ImageView cancel = (ImageView) convertView.findViewById(R.id.cancel);
ImageView download = (ImageView) convertView.findViewById(R.id.download);
viewHolder = new StateViewHolder(title, subTitle, progresstext, download, cancel, progressBar);
hashMap.put(state, viewHolder);
convertView.setTag(viewHolder);
Log.i("DownloadAdapter", "InGetView");
}else{
viewHolder = (StateViewHolder)convertView.getTag();
}
state.setViewHolder(viewHolder);
viewHolder.getDownload().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.getDownload().setVisibility(View.GONE);
viewHolder.getCancel().setVisibility(View.VISIBLE);
Log.i("DownloadAdapter", ""+state.getName());
DownloadQueue.addToQueue(state);
}
});
viewHolder.getCancel().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.getCancel().setVisibility(View.GONE);
viewHolder.getDownload().setVisibility(View.VISIBLE);
DownloadQueue.RemoveFromQueue(state);
}
});
viewHolder.getTitle().setText(state.getName());
viewHolder.getSubTitle().setText(state.getEffective());
return convertView;
}
}
感谢你, SRINIVAS
`
答案 0 :(得分:0)
当您使用视图持有者重用行视图时,您需要每次都显式设置所有视图。换句话说,您需要设置该行中的每个元素,包括标题,字幕,进度计数文本视图,进度条和下载图像视图切换。
您看到的是当一行将进度条设置为可见时,另一行可能正在重复使用(因此您也会在该行上看到进度条)。因此,您需要明确将进度条设置为对于未下载的行不可见。
因此,在getView方法的底部,请确保您具有设置每个视图的逻辑:
viewHolder.getTitle().setText(state.getName());
viewHolder.getSubTitle().setText(state.getEffective());
viewHolder.getProgressBar().setVisibility(isImageDownloading);
viewHolder.getProgressCount().setText("example");