在listview中,每行显示一个图片、一个按钮及说明文字,在点击某行按钮后,按钮变灰。但是发现点击某行的按钮后,在滑动界面时,发现其它的行的按钮也变灰了。请问这是什么问题?
下面是listview中getView方法代码:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
// TODO:点击按钮时,会操作多个按钮问题
if (convertView == null) {
convertView = inflater.inflate(R.layout.download_listview_oneline, null);
holder = new ViewHolder();
// TODO:网络上获取图片
holder.img = (ImageView)convertView.findViewById(R.id.imageViewId);
holder.textViewId1 = (TextView)convertView.findViewById(R.id.textViewId1);
holder.button1 = (Button)convertView.findViewById(R.id.button1);
// 不按比例缩放图片,目标是把图片塞满整个View
holder.img.setScaleType(ImageView.ScaleType.FIT_XY);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
try {
Integer value = R.drawable.class.getDeclaredField(images[position].substring(0, images[position].indexOf("."))).getInt(null);
holder.img.setImageResource(value);
} catch (Exception e) {
e.printStackTrace();
}
holder.textViewId1.setText(dess[position]);
holder.button1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
// TODO
// view.setEnabled(false);
if(view.getId() == R.id.button1)
{
Button b = (Button)view;
// 点击后该按钮变灰,不能再点
b.setEnabled(false);
dao.updateLastClickTime(2, _ids[position]);
String url = urls[position];
String filename = url.substring(url.lastIndexOf("/") + 1);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
checkFile(DIR, filename);
request.setDestinationInExternalPublicDir(DIR, filename);
long downloadId = downloadManager.enqueue(request);
//保存id
downloads.put(downloadId, _ids[position]);
}
}
});
return convertView;
}
// 标记tag
public final class ViewHolder {
public ImageView img;
public TextView textViewId1;
public Button button1;
}