Android ListView: получите индекс данных видимого объекта

У меня есть Android ListView созданный с a SimpleAdapter это имеет больше объектов в нем, чем помещаются в экран. После того, как список был прокручен, я должен получить положение в модели данных первого видимого объекта в списке.

В основном я хочу функцию как: listView.getChildAt(0).getPositionInDataModel().

Adapter имеет несколько функций в нем, как getItemId(position) это выглядело полезным; однако, SimpleAdapter реализация просто возвращает переданный в положении, не строка, которую я хотел бы, я надеялся.

Решение для грубой силы состояло бы в том, чтобы получить Представление в индексе 0 и сравнить его с представлением для каждого объекта в адаптере. Однако, кажется, нет простого способа получить представление для особого положения от адаптера.

У кого-либо есть какие-либо мысли?

34
задан Macarse 31 August 2013 в 12:56
поделиться

2 ответа

Это очень просто. Просто используйте ListView.getFirstVisiblePosition () + indexYouWant . Например, чтобы получить позицию в адаптере второго дочернего элемента, отображаемого в ListView , просто используйте getFirstVisiblePosition () + 1 .

Нет необходимости во всех страшных вещах, показанных в ответе выше :)

90
ответ дан 27 November 2019 в 16:15
поделиться
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
    public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) 
    {
        AisleId= parent.getSelectedItemId();
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
    }
});

При этом мы получим элемент списка Id parent.getSelectedItemId();

1
ответ дан 27 November 2019 в 16:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: