如果一个listview中包涵checkbox,比如购物车。要是去点击每个商品前面的checkbox的话比较难以点击,有时候设置成点击item就相当于点击了checkbox.

代码如下

public class MainActivity extends Activity {List beanList;private ListViewAdapter adapter;private ListView lv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView) findViewById(R.id.lv);beanList = new ArrayList();for (int i = 0; i < 10; i++) {beanList.add("text" + i);}adapter = new ListViewAdapter(this);lv.setAdapter(adapter);lv.setOnItemClickListener(new OnItemClickListener() {/** *  arg0 可以理解为整个listiew 布局 *  arg1 当前点击项 布局 *  arg2 position *  arg3 id */@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubRelativeLayout view1 = (RelativeLayout) arg1;CheckBox cb = (CheckBox) view1.getChildAt(0);    TextView tv= (TextView) view1.getChildAt(2);Toast t= new Toast(MainActivity.this);Toast.makeText(getApplicationContext(), tv.getText(),     Toast.LENGTH_SHORT).show();cb.setChecked(!cb.isChecked());adapter.isSelected.set(arg2, cb.isChecked());}});}@Overridepublic 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;}private final class ListViewHolder {public CheckBox check_goods;public ImageView imageViewIcon;public TextView title;public RelativeLayout groubuyitem;}private class ListViewAdapter extends BaseAdapter {// 用来控制CheckBox的选中状况public ArrayList isSelected;private LayoutInflater mInflater;private Context mContext;public ListViewAdapter(Context ctx) {this.mContext = ctx;this.mInflater = LayoutInflater.from(ctx);isSelected = new ArrayList();initDate();}// 初始化isSelected的数据private void initDate() {for (int i = 0; i < beanList.size(); i++) {isSelected.add(i, false);}}@Overridepublic int getCount() {// TODO Auto-generated method stubif (beanList == null) {return 0;}return beanList.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn beanList.get(arg0);}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(final int position, View convertView, ViewGroup arg2) {ListViewHolder viewHolder;if (convertView == null) {viewHolder = new ListViewHolder();convertView = mInflater.inflate(R.layout.item_groupbuy_shopcart, null);viewHolder.check_goods = (CheckBox) convertView.findViewById(R.id.check_goods);viewHolder.imageViewIcon = (ImageView) convertView.findViewById(R.id.img);viewHolder.title = (TextView) convertView.findViewById(R.id.title);viewHolder.groubuyitem = (RelativeLayout) convertView.findViewById(R.id.groubuyitem);convertView.setTag(viewHolder);} else {viewHolder = (ListViewHolder) convertView.getTag();}final int p = position;//viewHolder.groubuyitem//.setOnClickListener(new View.OnClickListener() {//@Override//public void onClick(View v) {////RelativeLayout view1 = (RelativeLayout) v;//CheckBox cb = (CheckBox) view1.getChildAt(0);//cb.setChecked(!cb.isChecked());//isSelected.set(p, cb.isChecked());////}//});viewHolder.title.setText(beanList.get(position));// 根据isSelected来设置checkbox的选中状况viewHolder.check_goods.setChecked(isSelected.get(position));viewHolder.check_goods.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubCheckBox cb = (CheckBox) v;isSelected.set(p, cb.isChecked());}});return convertView;}}}

主要代码在于onItemClick里面。

/**

            *  arg0 可以理解为整个listiew 布局

             *  arg1 当前点击项 布局

             *  arg2 position

             *  arg3 id

             */

 

关于getChildAt(0)查看官网的说明:

View getChildAt(int index) Returns the view at the specified position in the group.

看的不是明白:对应我的layout的话,checkbox是0,image是1,textview 是2.


更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 【原创】android中实现底部tabhost
  3. div+css命名规范 嫁接android xml命名
  4. android-电话拨号器&点击事件四种写法
  5. Android开发应用异步检查更新代码
  6. Andoroid学习笔记05——Activity布局管理
  7. 开发问题及解决 java.lang.ClassCastException:android.widget.L
  8. Android(安卓)Brightness Changing
  9. ScrollView包含其他可scroll的view时保持滑到最顶端

随机推荐

  1. Android对话框的几种形式
  2. Android(安卓)AlertDialog学习
  3. Android(安卓)Adapter的使用
  4. 全局窗口一
  5. android 图片轮播(banner)无限轮播
  6. android recovery模式选项中索引改进
  7. Android(安卓)强制横屏
  8. android中去掉button的边框和EditText中
  9. Android(安卓)各种工具类 图片下载工具类
  10. 【Arcgis for android】Error inflating