选中/取消选中ImageView上的复选框单击GridView gallery Android
您好,我在对话框中构建gridView库。我显示一些带有复选框的照片。现在我想在单击imageView后选中/取消选中复选框。现在它只会在我点击它的时候检查 下面是一些代码:选中/取消选中ImageView上的复选框单击GridView gallery Android,android,gridview,checkbox,gallery,Android,Gridview,Checkbox,Gallery,您好,我在对话框中构建gridView库。我显示一些带有复选框的照片。现在我想在单击imageView后选中/取消选中复选框。现在它只会在我点击它的时候检查 下面是一些代码: @Override public View getView(final int position, View convertView, ViewGroup parent) { if(convertView == null) { convertView
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView == null)
{
convertView = LayoutInflater.from(mContext).inflate(R.layout.my_grid, parent, false);
holder=new ViewHolder();
holder.imageView=(ImageView)convertView.findViewById(R.id.imageView);
holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
}
else
holder=(ViewHolder)convertView.getTag();
holder.checkBox.setOnCheckedChangeListener(null);
holder.checkBox.setChecked(check[position]);
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int counter=0;
for(int i=0;i<check.length;i++)
if(check[i]) counter++;
numberCheckboxes=counter;
if (isChecked && numberCheckboxes<=2)
{
numberCheckboxes++;
check[position] = true;
Toast.makeText(mContext, mContext.getResources().getString(R.string.zaznaczono_zdj), Toast.LENGTH_SHORT).show();
}
else if (!isChecked&&position<check.length)
{
numberCheckboxes--;
check[position]=false;
}
if (numberCheckboxes>=4&&isChecked)
{
buttonView.setChecked(false);
numberCheckboxes--;
check[position]=false;
}
}
});
Glide.with(mContext)
.load(this.listFiles.get(position).getAbsolutePath()) //path to picture
.into(holder.imageView);
return convertView;
}
static class ViewHolder{
ImageView imageView;
CheckBox checkBox;
}
@覆盖
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null)
{
convertView=LayoutInflater.from(mContext).充气(R.layout.my_grid,parent,false);
holder=新的ViewHolder();
holder.imageView=(imageView)convertView.findViewById(R.id.imageView);
holder.checkBox=(checkBox)convertView.findViewById(R.id.checkBox);
convertView.setTag(支架);
}
其他的
holder=(ViewHolder)convertView.getTag();
holder.checkBox.setOnCheckedChangeListener(null);
holder.checkBox.setChecked(选中[位置]);
setOnCheckedChangeListener(newcompoundButton.OnCheckedChangeListener()){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
int计数器=0;
对于(int i=0;i使用:
当我这样做时,土司会显示,但复选框没有动画,非常奇怪,你在哪里为复选框动画编写代码?我看不出另外,它总是先选中复选框,即使我单击另一个复选框,你应该选中复选框的条件复选框复选框取消选中复选框表示自定义动画,当我单击复选框时不发生任何事情toast显示复选框已选中,但我没有看到
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="@integer/width"
android:layout_height="@integer/height"
android:adjustViewBounds="true"
android:id="@+id/imageView"
android:layout_margin="5dp"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true" />
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"
android:layout_marginEnd="2dp"
android:focusable="false"
android:scaleX="1.8"
android:scaleY="1.8" />
</RelativeLayout>
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.checkBox.performClick();
}
});