如何检查复选框,单击上的图像? [英] How to check checkbox on clicking an image?

查看:152
本文介绍了如何检查复选框,单击上的图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了一个gridview和it.On添加了一个复选框点击复选框网格视图项它们与TextView中获取所选图像视图。

但我想检查网格视图项目的水龙头的复选框。

这我MainActivity

 公共类MainActivity延伸活动{            GridView控件GridView控件;
            @覆盖
            保护无效的onCreate(捆绑savedInstanceState){
                super.onCreate(savedInstanceState);
                的setContentView(R.layout.activity_main);                GridView控件=(GridView控件)findViewById(R.id.mainGrid);                gridview.setAdapter(新ImageAdapter(MainActivity.this));                gridview.setOnItemClickListener(新OnItemClickListener(){                    @覆盖
                    公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,
                            长ID){
                        // TODO自动生成方法存根
        //
        //                        ImageAdapter.holder.ItemCheck.setId(位置);
                        ImageAdapter.holder.ItemCheck.setOnClickListener(新OnClickListener(){                            公共无效的onClick(视图v){
                                // TODO自动生成方法存根                                //ImageAdapter.holder.ItemCheck.setChecked(true);
                                Toast.makeText(MainActivity.thisItemclicked,Toast.LENGTH_LONG).show();
                            }
                        });
                        Toast.makeText(
                                MainActivity.thisItemclicked,Toast.LENGTH_SHORT).show();                    }
                });                };
            @覆盖
            公共布尔onCreateOptionsMenu(菜单菜单){
                //充气菜单;如果是present这增加了项目操作栏。
                。getMenuInflater()膨胀(R.menu.main,菜单);
                返回true;
            }        }

这是我的AdapterClass

 公共类ImageAdapter延伸BaseAdapter {        私人语境mContext;
        公共静态ViewHolder持有人;        公共ImageAdapter(上下文C){
            mContext = C;
        }        @覆盖
        公众诠释的getCount(){
            返回mThumbIds.length;
        }        @覆盖
        公共对象的getItem(INT位置){
            返回null;
        }        @覆盖
        众长getItemId(INT位置){
            返回0;
        }
        公共布尔areAllItemsEnabled(){
            返回true;
        }        @覆盖
        公共布尔isEnabled(INT位置){
            // TODO自动生成方法存根
            返回true;
        }
        @覆盖
        公共查看getView(INT位置,查看convertView,父母的ViewGroup){
            // TODO自动生成方法存根            // ViewHolder持有人;
            查看MyView的= convertView;
            ImageView的ImageView的;
            如果(convertView == NULL){//如果它没有回收,初始化一些属性
                //充气布局                 持有人=新ViewHolder();
                ImageView的=新ImageView的(mContext);                imageView.setLayoutParams(新GridView.LayoutParams(85,85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8,8,8,8);
                LayoutInflater吹气=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                MyView的= inflater.inflate(R.layout.grid_items_ontap,NULL);                 holder.ItemCheck =(复选框)myView.findViewById(R.id.itemCheckBox);
                    myView.setTag(保持器);
            }其他{
                支架=(ViewHolder)myView.getTag();
            }
    // holder.ItemCheck.setId(位置);
    // holder.ItemCheck.setOnClickListener(新OnClickListener(){
    //
    //公共无效的onClick(视图v){
    // // TODO自动生成方法存根
    // Toast.makeText(mContextItemclicked,Toast.LENGTH_LONG).show();
    //}
    //});
                //添加图片!
                ImageView的IV =(ImageView的)myView.findViewById(R.id.grid_item_image_OnTap);
                iv.setImageResource(mThumbIds [位置]);
                //添加文字!
                TextView的电视=(TextView中)myView.findViewById(R.id.grid_item_text_onTap);
                tv.setText(名字[位置]);
                holder.ItemCheck.setChecked(的isEmpty());
                holder.id =位置;            返回MyView的;
        }            公共类ViewHolder {                公共复选框ItemCheck;
                INT ID;
            }        私人字符串[]名称= {AB,CD,EF,GH,IJ,KL,MN,,,,,, ,};        私人整数[] = mThumbIds {
                R.drawable.car,R.drawable.car,
                R.drawable.car,R.drawable.car,
                R.drawable.car,R.drawable.car,R.drawable.car,R.drawable.car,R.drawable.car,
                R.drawable.car,R.drawable.car,
                R.drawable.car,R.drawable.car,R.drawable.car
        };    }

Gridview.xml

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:ID =@ + ID /网格布局
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:paddingBottom会=@扪/ activity_vertical_margin
    机器人:paddingLeft =@扪/ activity_horizo​​ntal_margin
    机器人:paddingRight =@扪/ activity_horizo​​ntal_margin
    机器人:paddingTop =@扪/ activity_vertical_margin
    工具:上下文=MainActivity。>    < GridView控件
        机器人:ID =@ + ID / mainGrid
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:horizo​​ntalSpacing =0dp
        机器人:为numColumns =3
        机器人:可点击=真
        机器人:stretchMode =columnWidth时
        机器人:verticalSpacing =0dp>
    < / GridView的>< / LinearLayout中>

griditems.xml文件

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID /的GridItem
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:背景=@机器人:彩色/透明
    机器人:方向=垂直>    < ImageView的
        机器人:ID =@ + ID / grid_item_image_OnTap
        机器人:layout_width =100dp
        机器人:layout_height =100dp>
    < / ImageView的>    <的TextView
        机器人:ID =@ + ID / grid_item_text_onTap
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_alignParentBottom =真
        机器人:重力=CENTER_HORIZONTAL
        机器人:文字=TextView的
        机器人:文字颜色=@机器人:彩色/黑白>
    < / TextView的>    <复选框
        机器人:ID =@ + ID / itemCheckBox
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_alignParentRight =真
        机器人:layout_alignParentTop =真
        机器人:按钮=@绘制/ custom_checkbox
        安卓:检查=真
        机器人:知名度=看得见
        机器人:可聚焦=真/>< / RelativeLayout的>

请建议我。我是新来的Andr​​oid和我被困在这里。

感谢


解决方案

  

我要检查网格视图项目的水龙头的复选框。


您可以通过使用第二个参数做 onItemClick 方法:

  @覆盖
  公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,
                            长ID){
  // TODO自动生成方法存根
      CheckedTextView检查=(CheckedTextView)视图。
                   check.setChecked(check.isChecked()!);
                   布尔点击= check.isChecked()!;
                   check.setChecked(点击)
                   如果(点击)
                   {
                   //写你想要什么,只要点击一个复选框
                   }
 });

I have created a gridview and added a checkbox in it.On clicking on checkbox grid view item which are image view with textview get selected.

But I want to check the checkbox on tap of grid view item.

This my MainActivity

 public class MainActivity extends Activity {

            GridView gridview;


            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);



                gridview = (GridView) findViewById(R.id.mainGrid);

                gridview.setAdapter(new ImageAdapter(MainActivity.this));

                gridview.setOnItemClickListener(new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View v, int position,
                            long id) {
                        // TODO Auto-generated method stub
        //
        //



                        ImageAdapter.holder.ItemCheck.setId(position);
                        ImageAdapter.holder.ItemCheck.setOnClickListener(new OnClickListener() {

                            public void onClick(View v) {
                                // TODO Auto-generated method stub

                                //ImageAdapter.holder.ItemCheck.setChecked(true);
                                Toast.makeText(MainActivity.this, "Itemclicked" ,Toast.LENGTH_LONG).show();
                            }
                        });
                        Toast.makeText(
                                MainActivity.this, "Itemclicked", Toast.LENGTH_SHORT).show();

                    }
                });

                };


            @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
            }

        }

This is my AdapterClass

    public class ImageAdapter extends BaseAdapter{

        private Context mContext;
        public static ViewHolder holder;



        public ImageAdapter(Context c) {
            mContext = c;
        }



        @Override
        public int getCount() {
            return mThumbIds.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }


        public boolean areAllItemsEnabled(){
            return true;
        }

        @Override
        public boolean isEnabled(int position) {
            // TODO Auto-generated method stub
            return true;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            //ViewHolder holder;
            View myView = convertView;
            ImageView imageView;
            if (convertView == null) {  // if it's not recycled, initialize some attributes
                //Inflate the layout

                 holder = new ViewHolder();
                imageView = new ImageView(mContext);

                imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8, 8,8, 8);




                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);           
                myView = inflater.inflate(R.layout.grid_items_ontap, null);

                 holder.ItemCheck = (CheckBox) myView.findViewById(R.id.itemCheckBox);
                    myView.setTag(holder);
            }else{
                holder = (ViewHolder) myView.getTag();
            }
    //      holder.ItemCheck.setId(position);
    //      holder.ItemCheck.setOnClickListener(new OnClickListener() {
    //
    //          public void onClick(View v) {
    //              // TODO Auto-generated method stub
    //              Toast.makeText(mContext, "Itemclicked" ,Toast.LENGTH_LONG).show();
    //          }
    //      });


                // Add The Image!!!           
                ImageView iv = (ImageView)myView.findViewById(R.id.grid_item_image_OnTap);
                iv.setImageResource(mThumbIds[position]);


                // Add The Text!!!
                TextView tv = (TextView)myView.findViewById(R.id.grid_item_text_onTap);
                tv.setText(names[position] );


                holder.ItemCheck.setChecked(isEmpty());
                holder.id = position;



            return myView;
        }





            public class ViewHolder {

                public CheckBox ItemCheck;
                int id;
            }



        private String[] names={"ab","cd","ef","gh","ij","kl","mn","","","","","","",""};

        private Integer[] mThumbIds = {
                R.drawable.car, R.drawable.car,
                R.drawable.car, R.drawable.car,
                R.drawable.car,R.drawable.car,R.drawable.car,R.drawable.car, R.drawable.car,
                R.drawable.car, R.drawable.car,
                R.drawable.car,R.drawable.car,R.drawable.car
        };

    }

Gridview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/gridlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <GridView
        android:id="@+id/mainGrid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:horizontalSpacing="0dp"
        android:numColumns="3"
        android:clickable="true"
        android:stretchMode="columnWidth"
        android:verticalSpacing="0dp" >
    </GridView>

</LinearLayout>

griditems.xml file

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/GridItem"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/grid_item_image_OnTap"
        android:layout_width="100dp"
        android:layout_height="100dp" >
    </ImageView>

    <TextView
        android:id="@+id/grid_item_text_onTap"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal"
        android:text="TextView"
        android:textColor="@android:color/black" >
    </TextView>

    <CheckBox
        android:id="@+id/itemCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:button="@drawable/custom_checkbox"
        android:checked="true"
        android:visibility="visible"
        android:focusable="true" />

</RelativeLayout>

Please suggest me.I m new to android and I got stuck here.

Thanks

解决方案

I want to check the checkbox on tap of grid view item.

you can do it by using second parameter of onItemClick method as:

@Override
  public void onItemClick(AdapterView<?> parent, View v, int position,
                            long id) {
  // TODO Auto-generated method stub
      CheckedTextView check = (CheckedTextView)view;
                   check.setChecked(!check.isChecked());
                   boolean click = !check.isChecked();
                   check.setChecked(click);
                   if (click) 
                   {
                   //write what you want whenever click a checkbox
                   }
 });

这篇关于如何检查复选框,单击上的图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆