У меня есть Android ListView
созданный с a SimpleAdapter
это имеет больше объектов в нем, чем помещаются в экран. После того, как список был прокручен, я должен получить положение в модели данных первого видимого объекта в списке.
В основном я хочу функцию как: listView.getChildAt(0).getPositionInDataModel()
.
Adapter
имеет несколько функций в нем, как getItemId(position)
это выглядело полезным; однако, SimpleAdapter
реализация просто возвращает переданный в положении, не строка, которую я хотел бы, я надеялся.
Решение для грубой силы состояло бы в том, чтобы получить Представление в индексе 0 и сравнить его с представлением для каждого объекта в адаптере. Однако, кажется, нет простого способа получить представление для особого положения от адаптера.
У кого-либо есть какие-либо мысли?
Это очень просто. Просто используйте ListView.getFirstVisiblePosition () + indexYouWant
. Например, чтобы получить позицию в адаптере второго дочернего элемента, отображаемого в ListView
, просто используйте getFirstVisiblePosition () + 1
.
Нет необходимости во всех страшных вещах, показанных в ответе выше :)
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();