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

Я попробовал следующее, но безуспешно, поскольку getChildAt всегда возвращает ноль (я уверен, что 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 данных.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

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

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

0 голосов
/ 20 декабря 2011

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

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

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

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