Android: list.getCheckedItemPositions () всегда возвращает ноль

Я создал собственный ListView, расширив SimpleCursorAdapter. Результат - ИЗОБРАЖЕНИЕ + CheckedTextView (Текст + Флажок).

После того, как у меня были проблемы с неправильными флажками, проверяющимися (посмотреть здесь) Пришлось убратьlv.setChoiceMode (ListView.CHOICE_MODE_MULTIPLE); от создания.

Теперь я нажимаю на строку ListItem, и она проверяет флажок справа.

Я пытаюсь сделать LinearLayout.VISIBLE, когда установлен один или несколько флажков, и сделать LinearLayout.GONE, если флажок не установлен.

Вот код:

lv.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

CheckedTextView markedItem = (CheckedTextView) view.findViewById(R.id.btitle);

if (!markedItem.isChecked()) {
 markedItem.setChecked(true);

 //show bottom control panel
 findViewById(R.id.bottom_control_bar).setVisibility(LinearLayout.VISIBLE);


} else {
 markedItem.setChecked(false);

 SparseBooleanArray lala = ((ListView) parent).getCheckedItemPositions();

 //if no checkbox is checked, hide bottom control panel
 if (lala == null) {
  findViewById(R.id.bottom_control_bar).setVisibility(LinearLayout.INVISIBLE);
 }
}
view.refreshDrawableState();
//showSortBtn(markedItem);

}});

Вот как я связываю listView с пользовательским адаптером:

projection = new String[] { Browser.BookmarkColumns._ID,
                Browser.BookmarkColumns.FAVICON, Browser.BookmarkColumns.TITLE,
                Browser.BookmarkColumns.URL };
        displayFields = new String[] { Browser.BookmarkColumns.TITLE,
                Browser.BookmarkColumns.FAVICON, Browser.BookmarkColumns.URL };
        int[] displayViews = new int[] { android.R.id.icon, android.R.id.text1 };

        cur = managedQuery(BOOKMARKS_URI, projection,
                Browser.BookmarkColumns.BOOKMARK + " == 1", null, Browser.BookmarkColumns.VISITS + " DESC");

        setListAdapter(new ImageCursorAdapter(this,
                android.R.layout.simple_list_item_single_choice, cur,
                displayFields, displayViews));

У меня есть две проблемы с этим:

если я установлю 2 или более флажков, а затем сниму только один, LinearLayout исчезнет, ​​что означаетSparseBooleanArray lala = ((ListView) parent).getCheckedItemPositions(); нулевой. почему он нулевой, если еще установлены другие флажки?

если я переключусьfindViewById(R.id.bottom_control_bar).setVisibility(LinearLayout.INVISIBLE); вfindViewById(R.id.bottom_control_bar).setVisibility(LinearLayout.GONE); (как я хочу сделать) первый флажок проверяется правильно, и после того, как LinearLayout ушел, все снова беспорядок, как намой предыдущий вопрос.

Цени любую помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос