Реагировать на флажок Нажмите в Cutsom ListView - PullRequest
0 голосов
/ 06 апреля 2011

У меня мало времени до неудачи, хотя я считаю, что решение моей проблемы не так уж сложно.У меня есть ListView, который де-сериализует ArrayList из SettingItems.Каждая строка в этом представлении содержит два textview s и один Checkbox.Состояние флажка должно учитывать, будет ли этот элемент соблюдаться или нет.Код listView можно проверить на моем предыдущем вопросе:

. Определенные строки создаются в моем CustomSettingsAdapter, который расширяет BaseAdapter.Поэтому он содержит ArrayList для SettingItems.

    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 и получил фактическую позицию для ArrayList с cb.getID, но он возвращается с той же проблемой.

1 Ответ

0 голосов
/ 06 апреля 2011

Попробуйте это:

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

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

            //code for making the listItem invisible.
                }

            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...