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,您将在其中添加或删除所选项目
例如
您有一个临时arraylistarraylist模板代码>
现在在getview方法中,您必须做两个更改
检查当前对象是否在临时阵列列表中。如果当前元素在临时数组列表中,则只需将复选框的状态设置为true,否则将其设置为false
在复选框的onClick方法中,首先检查复选框的状态。如果选中该复选框,则只需检查当前元素是否在临时arraylist中。如果不在临时arraylist中,则只需将当前元素添加到arraylist中。如果复选框的状态未选中,则检查当前元素的临时数组列表,如果临时数组列表中存在,则将其从列表中删除,然后调用notifyDatasetChanged
方法
我使用了这个东西,如果有人从这个链接得到帮助,请上传我的查询。我使用了这个东西,如果有人从这个链接得到帮助,请上传我的查询。