Как запомнить помеченные позиции коробки? - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть список с пользовательским адаптером массива, и я пытаюсь выяснить, как сохранить состояние проверенных позиций.Я думал о сохранении позиции флажка в массиве int каждый раз, когда проверяется элемент, а затем в getView, если массив содержит число, которое он установит isChecked () == true.Тем не менее, я не знаю, как искать в массиве.Любая помощь будет отличной!Вот некоторый базовый код на адаптере:

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        final Contact c = (Contact) getItem(position);
        final ViewHolder viewHolder = new ViewHolder();
        // if the array item is null, nothing to display, just return null
        if (c == null) {
            return null;
        }

        LayoutInflater inflater = (LayoutInflater)
        getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        TwoLineListItem view;


        if (convertView == null) {
            view = (TwoLineListItem) inflater.inflate(resourceId, parent, false);
        } else {
            view = (TwoLineListItem) convertView;
        }

        final int pos = position;
       final SharedPreferences myprefs = PreferenceManager.getDefaultSharedPreferences(getContext());
        final SharedPreferences.Editor editor = myprefs.edit();
        viewHolder.checkbox = (CheckBox)view.findViewById(R.id.checkbox);

        viewHolder.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

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

                contactInfo.add(pos+","+c.getName()+","+c.getNumber());

                StringBuilder sb = new StringBuilder();
                for (String s : contactInfo)
                {
                    sb.append(s);
                    sb.append("\t");
                }

                editor.putString("contacts", sb.toString()).commit();



                }else {
                    contactInfo.remove(pos+","+c.getName()+","+c.getNumber());
                    StringBuilder sb = new StringBuilder();
                    for (String s : contactInfo)
                    {
                        sb.append(s);
                        sb.append("\t");
                    }
                    editor.putString("contacts", sb.toString()).commit();

                }
            }
        });

1 Ответ

0 голосов
/ 09 ноября 2011
CheckBox check =(CheckBox)v.findViewById(R.id.check);
            check.setTag(new Integer(childPosition));
            check.setChecked(listEditable.get(childPosition).isSelected());
            check.setOnCheckedChangeListener(new OnCheckedChangeListener() {          
                  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
                    {
                        Integer myPosition=(Integer)buttonView.getTag();
                        if ( isChecked )
                        {
                            listEditable.get(myPosition).setSelected(true);
                        }
                        else
                        {
                            listEditable.get(myPosition).setSelected(false);
                        }
                    }         
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...