Checkbox上的React单击Custom ListView

时间:2011-04-06 09:56:54

标签: android listview checkbox

我在失败前很短暂,虽然我相信解决我的问题并不困难。 我有一个ListView来解除序列化ArrayList SettingItems。此视图中的每一行包含两个textview和一个Checkbox。复选框状态应考虑是否观察此项目。对于listView代码,您可以查看我的previous question:

特定的行是在我的CustomSettingsAdapter中创建的,它正在扩展BaseAdapter。因此它包含SettingItems的ArrayList。

    private static ArrayList<SettingItem> settingsArrayList; 
private LayoutInflater mInflater;

public CustomSettingsAdapter(Context context, ArrayList<SettingItem> sitems)
{
    settingsArrayList = sitems;
    mInflater = LayoutInflater.from(context);
}

public int getCount()
{
    return settingsArrayList.size();
}

public Object getItem(int position)
{
    return settingsArrayList.get(position);
}

public ArrayList<SettingItem> getItemList()
{
    return settingsArrayList;
}

public long getItemId(int position)
{
    return position;
}

public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null)
    {
        convertView = mInflater.inflate(R.layout.settings_item, null);
        holder = new ViewHolder();
        holder.txtName = (TextView) convertView.findViewById(R.id.setting_name);
        holder.details = (TextView) convertView.findViewById(R.id.setting_detail);
        holder.cb = (CheckBox) convertView.findViewById(R.id.check);
        convertView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.txtName.setText(settingsArrayList.get(position).getName());
    holder.details.setText(settingsArrayList.get(position).getPath());
    holder.cb.setChecked(settingsArrayList.get(position).getState());


    holder.cb.setOnClickListener(new OnClickListener() {

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

        }
    });

    return convertView;

我的想法只是更改适配器中的ArrayList,然后将其提供给Activity,它可以与原始列表匹配,之后通常可以序列化。但我不知道它是用我的知识和我在网络上找到的东西来工作的。 非常感谢您提前帮助我! 最诚挚的问候托比

编辑:onCheckedChangeListener:

holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            settingsArrayList.get(position).setState(isChecked);
            notifyDataSetChanged();
        }
    });

也尝试使用cd.setID并使用cb.getID接收ArrayList的实际位置,但它返回的问题相同。

1 个答案:

答案 0 :(得分:0)

试试这个:

holder.checkBoxListView
            .setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {

            //code for making the listItem invisible.
                }

            });