如何检查复选框,单击上的图像? [英] How to check checkbox on clicking an image?
问题描述
我已经创建了一个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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:ID =@ + ID /网格布局
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:paddingLeft =@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
工具:上下文=MainActivity。> < GridView控件
机器人:ID =@ + ID / mainGrid
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:horizontalSpacing =0dp
机器人:为numColumns =3
机器人:可点击=真
机器人:stretchMode =columnWidth时
机器人:verticalSpacing =0dp>
< / GridView的>< / LinearLayout中>
griditems.xml文件
<的RelativeLayout的xmlns:机器人=http://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的>
请建议我。我是新来的Android和我被困在这里。
感谢
我要检查网格视图项目的水龙头的复选框。
块引用>您可以通过使用第二个参数做
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屋!