imageviewでチェックボックスを表示していますが、gridviewでクリックしていますが、1つの画像をクリックすると複数の画像ビューにアンドロイドが表示され、スクロールすると表示チェックボックスが消えます。 ここ私のアダプタですグリッドビューホルダーに複数の時間が表示されているチェックボックスパターン
public class ImageAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public ImageAdapter() {
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return arrPath.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(
R.layout.galleryitems, parent,false);
holder.imageview = (ImageView) convertView.findViewById(R.id.thumbImage);
holder.checkbox = (CheckBox) convertView.findViewById(R.id.itemCheckBox);
convertView.setTag(R.id.itemCheckBox, holder.checkbox);
convertView.setTag(R.id.thumbImage,holder.imageview);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
holder.checkbox = (CheckBox)convertView.getTag();
holder.imageview = (ImageView)convertView.getTag();
}
holder.checkbox.setId(position);
holder.imageview.setId(position);
holder.checkbox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) v;
int id = cb.getId();
if (thumbnailsselection[id]) {
cb.setChecked(false);
thumbnailsselection[id] = false;
} else {
cb.setChecked(true);
thumbnailsselection[id] = true;
}
}
});
holder.imageview.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
ImageView iv = (ImageView)v;
int id = iv.getId();
if (holder.checkbox.getVisibility() == View.GONE) {
holder.checkbox.getTag();
holder.imageview.getTag();
holder.imageview.setAlpha(0.22f);
holder.checkbox.setVisibility(View.VISIBLE);
holder.checkbox.setChecked(true);
} else if (holder.checkbox.getVisibility() == View.VISIBLE) {
holder.imageview.setAlpha(0.8f);
holder.checkbox.setVisibility(View.GONE);
}
}
});
holder.checkbox.setTag(position);
holder.imageview.setImageBitmap(thumbnails[position]);
holder.checkbox.setChecked(thumbnailsselection[position]);
holder.id = position;
return convertView;
}
}
class ViewHolder {
ImageView imageview;
CheckBox checkbox;
int id;
}
}
、それは私のために働いた、このコードを試してみてください return arrPath.length; else return 0; } @Override public int getItemViewType(int position){ // TODO自動生成メソッドスタブ return 0; } – bambi
別の「ビューホルダー」パターンの問題? 99%の症例でビューホルダーのパターンは役に立たず、頭痛の原因となるのは – pskink