1

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

这是我的应用程序屏幕截图

这是我的适配器类

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;
}

}

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

4

1 回答 1

4

要跟踪所选项目,请获取对象的一个​​临时数组列表或简单的字符串数组列表,您将在其中添加或删除所选项目。

例如

你有一个临时数组列表ArrayList<MenuItem> tempList;

现在在 getview 方法中,您将必须进行两项更改

  1. 检查天气当前对象是否在临时数组列表中。如果当前元素在临时数组列表中,则只需将复选框的状态设置为 true,否则将其设置为 false。
  2. 在复选框的 onClick 方法中首先检查复选框的状态。如果选中该复选框,则只需检查当前元素是否在临时数组列表中,否则只需将当前元素添加到数组列表中。如果复选框的状态未选中,则检查当前元素的临时数组列表,如果临时数组列表中存在,则将其从列表中删除,然后调用该notifyDatasetChanged方法
于 2012-04-18T11:28:56.023 回答