Android 单击listview中包含的复选框时无法选择整个项目

Android 单击listview中包含的复选框时无法选择整个项目,android,listview,Android,Listview,我正在处理自定义列表视图 这是我的适配器类 public class MenubaseAdapter extends BaseAdapter { private static ArrayList<MenuItem> searchMenuItemArraylist; private LayoutInflater menuInflater; public MenubaseAdapter( Context context,ArrayList<MenuItem> results

我正在处理自定义列表视图

这是我的适配器类

public class MenubaseAdapter extends BaseAdapter {
private static ArrayList<MenuItem> searchMenuItemArraylist;
private LayoutInflater menuInflater;
public MenubaseAdapter( Context context,ArrayList<MenuItem> results) {
    searchMenuItemArraylist=results;
    menuInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return searchMenuItemArraylist.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

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

               iewHolder holder;
            if(convertView==null)
            {
                convertView=menuInflater.inflate(R.layout.menu_list, null);
                holder=new MenuViewHolder();

                holder.txtItemName=(TextView)convertView.findViewById(R.id.textView_menuitem);
                holder.txtItemPrice=(TextView)convertView.findViewById(R.id.textView_itemprice);
                holder.txtItemQty=(TextView)convertView.findViewById(R.id.TextView_itemQty);
                holder.selectChk=(CheckBox)convertView.findViewById(R.id.checkBox_menuchk);



                convertView.setTag(holder);
            }else {
                holder=(MenuViewHolder)convertView.getTag();
            }
            holder.txtItemName.setText(searchMenuItemArraylist.get(position).getMenuItemname());
            holder.txtItemPrice.setText(searchMenuItemArraylist.get(position).getMenuItemPrice());
            holder.txtItemQty.setText(searchMenuItemArraylist.get(position).getItemQty());
            holder.selectChk.setChecked(searchMenuItemArraylist.get(position).isSelected());
holder.selectChk.setOnClickListener(new OnClickListener() {

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

                        //how to select the listview item ?
                    }
                });

 return convertView;

        }

static class MenuViewHolder
{
    TextView txtItemName;
    TextView txtItemPrice;
    TextView txtItemQty;
    CheckBox selectChk;
}
公共类MenubaseAdapter扩展BaseAdapter{
私有静态ArrayList searchMenuItemArraylist;
私人停车场;
公共菜单ubaseAdapter(上下文、ArrayList结果){
searchMenuItemArraylist=结果;
menuInflater=LayoutInflater.from(上下文);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回searchMenuItemArraylist.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
肩托;
if(convertView==null)
{
convertView=menuInflater.inflate(R.layout.menu\u列表,空);
holder=新菜单WieWholder();
holder.txtItemName=(TextView)convertView.findViewById(R.id.TextView\u菜单项);
holder.txtItemPrice=(TextView)convertView.findViewById(R.id.TextView\u itemprice);
holder.txtItemQty=(TextView)convertView.findViewById(R.id.TextView\u itemQty);
holder.selectChk=(复选框)convertView.findViewById(R.id.CheckBox\u menuchk);
convertView.setTag(支架);
}否则{
holder=(MenuViewHolder)convertView.getTag();
}
holder.txtItemName.setText(searchMenuItemArraylist.get(position.getMenuItemname());
holder.txtItemPrice.setText(searchMenuItemArraylist.get(position.getMenuItemPrice());
holder.txtItemQty.setText(searchMenuItemArraylist.get(position.getItemQty());
holder.selectChk.setChecked(searchMenuItemArraylist.get(position.isSelected());
holder.selectChk.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
//如何选择listview项?
}
});
返回视图;
}
静态类MenuViewHolder
{
TextView txtItemName;
TextView txtItemPrice;
TextView txtItemQty;
复选框选择CHK;
}
}


现在我的问题是,当我单击foodmenuitems时,列表会被选中,复选框会被选中。但是,如果我只单击复选框,列表项将不会被选中。thnx提前。

要跟踪所选项目,获取对象的临时arraylist或字符串的简单arraylist,您将在其中添加或删除所选项目

例如

您有一个临时arraylist
arraylist模板

现在在getview方法中,您必须做两个更改

  • 检查当前对象是否在临时阵列列表中。如果当前元素在临时数组列表中,则只需将复选框的状态设置为true,否则将其设置为false
  • 在复选框的onClick方法中,首先检查复选框的状态。如果选中该复选框,则只需检查当前元素是否在临时arraylist中。如果不在临时arraylist中,则只需将当前元素添加到arraylist中。如果复选框的状态未选中,则检查当前元素的临时数组列表,如果临时数组列表中存在,则将其从列表中删除,然后调用
    notifyDatasetChanged
    方法

  • 要跟踪所选项目,请获取对象的临时arraylist或字符串的简单arraylist,您将在其中添加或删除所选项目

    例如

    您有一个临时arraylist
    arraylist模板

    现在在getview方法中,您必须做两个更改

  • 检查当前对象是否在临时阵列列表中。如果当前元素在临时数组列表中,则只需将复选框的状态设置为true,否则将其设置为false
  • 在复选框的onClick方法中,首先检查复选框的状态。如果选中该复选框,则只需检查当前元素是否在临时arraylist中。如果不在临时arraylist中,则只需将当前元素添加到arraylist中。如果复选框的状态未选中,则检查当前元素的临时数组列表,如果临时数组列表中存在,则将其从列表中删除,然后调用
    notifyDatasetChanged
    方法
  • 我使用了这个东西,如果有人从这个链接得到帮助,请上传我的查询。我使用了这个东西,如果有人从这个链接得到帮助,请上传我的查询。