Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改checbox';GridView中的s状态_Android_Android Imageview_Android Gridview_Android Adapter_Android Checkbox - Fatal编程技术网

Android 更改checbox';GridView中的s状态

Android 更改checbox';GridView中的s状态,android,android-imageview,android-gridview,android-adapter,android-checkbox,Android,Android Imageview,Android Gridview,Android Adapter,Android Checkbox,我有一个带有自定义项的GridView:一个ImageView和一个复选框。我想在ImageView上设置ClickListener,以便在单击图像时选中/取消选中复选框的状态 这是gridView的适配器: public class ProductAdapter extends ArrayAdapter<Product>{ Context context; int layoutResourceId; Product datap[]; public

我有一个带有自定义项的GridView:一个ImageView和一个复选框。我想在ImageView上设置ClickListener,以便在单击图像时选中/取消选中复选框的状态

这是gridView的适配器:

public class ProductAdapter extends ArrayAdapter<Product>{
    Context context;
    int layoutResourceId;
    Product datap[];

    public ProductAdapter(Context context, int layoutResourceId, Product datap[]){
        super(context, layoutResourceId, datap);
        this.context = context;
        this.layoutResourceId = layoutResourceId;
        this.datap = datap;
}

@Override
public View getView(int position, View convertView, ViewGroup parent){
    View row = convertView;
    ProductHolder holder = null;
    if(row == null){
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new ProductHolder();
        holder.imgIcon = (ImageView)row.findViewById(R.id.gviv);
        holder.den = (TextView)row.findViewById(R.id.gvtv1);
        holder.pretN = (TextView)row.findViewById(R.id.gvtv2);
        holder.pretV = (TextView)row.findViewById(R.id.gvtv3);
        holder.cb = (CheckBox)row.findViewById(R.id.gcb);
        row.setTag(holder);
    }else{
        holder=(ProductHolder)row.getTag();
    }
    Product product = datap[position];
    holder.denumire.setText(product.den);
    holder.imgIcon.setImageResource(product.icon);
    holder.imgIcon.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // THIS DOESN'T WORK!!!!!
            holder.cb.setChecked(true);

        }
    });

    holder.pretN.setText(product.pretN);
    holder.pretV.setText(product.pretV);
    return row;

}

static class ProductHolder{
    ImageView imgIcon;
    TextView den;
    TextView pretN;
    TextView pretV;
    CheckBox cb;
}

}
公共类ProductAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
产品数据p[];
public ProductAdapter(上下文上下文、int-layoutResourceId、产品数据p[]){
超级(上下文、布局资源ID、数据处理);
this.context=上下文;
this.layoutResourceId=layoutResourceId;
this.datap=datap;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ProductHolder=null;
if(行==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
holder=新产品holder();
holder.imgIcon=(ImageView)row.findViewById(R.id.gviv);
holder.den=(TextView)row.findViewById(R.id.gvtv1);
holder.pretN=(TextView)row.findViewById(R.id.gvtv2);
holder.pretV=(TextView)row.findViewById(R.id.gvtv3);
holder.cb=(复选框)row.findViewById(R.id.gcb);
row.setTag(支架);
}否则{
holder=(ProductHolder)行。getTag();
}
产品产品=数据点[位置];
持有者.denumire.setText(产品.den);
holder.imgIcon.setImageResource(产品图标);
holder.imgIcon.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
//这不行!!!!!
保持架cb.setChecked(正确);
}
});
holder.pretN.setText(product.pretN);
holder.pretV.setText(product.pretV);
返回行;
}
静态类产品持有者{
ImageView imgIcon;
文本视图;
文本视图pretN;
TextView-pretV;
复选框cb;
}
}

调用
notifyDataSetChanged()在check命令之后

        public void onClick(View v) {
            // THIS DOESN'T WORK!!!!!
            holder.cb.setChecked(true);
            notifyDataSetChanged();
        }

你能添加一个简单的样本吗?那不是工作。。。“无法引用在不同方法中定义的内部类中的非最终变量持有者”我所做的只是告诉您将
notifyDataSetChanged()放置在何处命令。这是我粘贴在这里的代码。如果它以前工作过,这不会影响它。