Получение информации о флажках из списка - PullRequest
0 голосов
/ 16 января 2012

У меня есть действие с фрагментом списка, в котором есть макет с флажком для каждой строки. Я установил атрибут onclick xml для флажка и проделал следующее для тестирования

public void onBoxClick(View v){
    checkedItems = listview.getCheckedItemPositions();
    int checkedItemsCount = checkedItems.size();

}

checkedItemsCount возвращается 0, я подумал, какие проверенные предметы вы используете listview.getCheckedItemPositions(), но это не так, как узнать, что проверено в списке?

это мой список создания фрагмента

@Override
    public void onActivityCreated(Bundle state){
        super.onActivityCreated(state);
        listview = getListView();
        listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        listview.setItemsCanFocus(false);
        setEmptyText("No Bowlers");       
        registerForContextMenu(getListView());
        populateList();
    }

Ответы [ 2 ]

0 голосов
/ 18 января 2012

Я справился с проблемой с помощью пользовательского адаптера bindView, я создал ArrayList<Integer> переменную

ArrayList<Integer> mCheckedItems = new ArrayList<Integer>();

и В bindView я установил checkedchangelistener на флажок, чтобы увидеть, был ли флажок установлен или нет. Если это было проверено, я помещал идентификатор из базы данных, чтобы курсор попал в mCheckedItems Array

адаптер:

public class CheckAdapter extends SimpleCursorAdapter{

    Context context;

    public CheckAdapter(Context context, int layout, Cursor c,String[] from, int[] to,int flag) {
        super(context, layout, c, from, to);
        this.context = context;
    }

    @Override
    public void bindView(View view,Context context,Cursor cursor){
        final String name = cursor.getString(cursor.getColumnIndex(BowlersDB.NAME));
        final int id = cursor.getInt(cursor.getColumnIndex(BowlersDB.ID));
        TextView tv = (TextView)view.findViewById(R.id.nameCheckTV);
        tv.setText(name);

        CheckBox cb = (CheckBox)view.findViewById(R.id.checkBox1);
        cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){

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

                if(isChecked){
                    mCheckedItems.add(id);
                }else if(!isChecked){
                    for(int i=0; i< mCheckedItems.size(); i++){
                        if(mCheckedItems.get(i) == id){
                            mCheckedItems.remove(i);
                        }
                    }                   
                }

            }

        });
    }

После того, как идентификатор был вставлен в массив, я использовал список массивов, чтобы использовать их так, как мне нужно

0 голосов
/ 16 января 2012

Эта запись может помочь.Он дает решение с использованием пользовательского ResourceCursorAdapter, который предоставляет CheckBox и TextView для каждой строки ListView.

Чтобы выбрать несколько элементов в ListView, установите флажок страница .Обратите внимание, что в примере используется ListActivity вместо ListFragment, но ваш код в конечном итоге будет очень похожим.Просто убедитесь, что вы правильно внедрили методы жизненного цикла Fragment (т.е. установите адаптер в ListFragment onActivityCreated() и т. Д.).

...