Как смоделировать выделение по первому элементу (или любой другой позиции) в ListView?

1

Я пробовал следующее, но мне не повезло, так как getChildAt всегда возвращает null (я уверен, что listView заполнен).

listView.performItemClick(listView.getChildAt(0), 0, listView.getChildAt(0).getId());

Какие-либо предложения? Благодарю!

Отредактировано: код для добавления элемента в список

            lvAdapter = new ActionStreamAdapter<HasDescription>(getBaseContext());
            while ((item = actionStreamQueue.poll()) != null) {
             ...
                lvAdapter.addItem(item);
            }
            ListView.setAdapter(lvAdapter);

Где ActionStreamAdapter - это класс, расширяющий BaseAdapter. Очередь заполняется вызовом Dao простого класса sturcure данных.

  • 0
    Когда вы пытаетесь это сделать? Весьма вероятно, что ваш ListView еще не визуализирован, поэтому у него нет дочерних элементов. Это будет иметь место, если вы пытаетесь запустить это в onCreate или onResume.
  • 0
    Нет, я не делаю этого, как я уже упоминал .. ListView заполнен наверняка. По словам Джорди, getChildAt не делает то, что я хотел
Теги:
android-listview

2 ответа

1

Существует разница между детьми и предметами. Ребенок - это представление, которое ниже в иерархии представлений. Например, когда есть LinearLayout, содержащий два TextViews, TextViews являются дочерними элементами LinearLayout. В элементе ListView есть элементы. Они находятся на том же иерархическом уровне, что и ваш ListView, поэтому они не являются дочерними. Это элементы ListView. Вместо этого вы должны использовать ListView.getItemAtPosition().

Тогда есть разница между выбором и щелчком. Щелчок означает выполнение действия над элементом, и выделение выделяет его. Для выбора первого элемента вы должны сделать что-то вроде: ListView.getItemAtPosition(n).requestFocus()

  • 0
    Спасибо за сообщение о различиях! На самом деле, прежде чем я попробовал метод getChild, я попробовал getItemAtPosition, но похоже, что он возвращает объект, а не представление (и не может быть приведен к одному). Любая идея?
  • 0
    Тип возвращаемого объекта зависит от адаптера, используемого для привязки списка к данным. Я могу дать вам пример кода о том, как заставить это работать, если вы предоставите код заполнения списка.
Показать ещё 1 комментарий
0

Это интересный API, где он принимает указатель на viewitem, обычно элементы listview перерабатываются, поэтому элемент в позиции 0 не должен быть 0-м элементом адаптера. Вы можете использовать findViewWithTagTraversal(), чтобы найти представление и сделать выбор на нем.

Если вы не возражаете против того, что вы хотите сделать с выбором, или хотите сосредоточиться на первом элементе?

Вы можете использовать setSelection()

  • 0
    Я на самом деле хочу выбрать первый элемент по умолчанию и выделить его. Теперь я закончил ту часть, которая, когда я нажимаю на один элемент, он подсвечивается, и детали отображаются в правой части действия (что-то вроде приложения Gmail на планшете). ).
  • 0
    Делает ли setSelection то, что вы хотите?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню