Intereting Posts
Есть ли более простой способ анализа XML в Java? BluetoothLeScanner.startScan с Android 6.0 не обнаруживает устройств DeadObjectException в приложении для Android Как восстановить состояние просмотра фрагмента Android Создать файл формы xml в папке с возможностью рисования в андроид-студии Изменение метаданных манифеста из кода В EditText существует ли способ отключить автокоррект на пролете? Есть ли способ иметь общий раздел с buildConfigField и resValue в градиенте? Разделите формат даты JSON на String, используя GSON на Android Как заставить PagerAdapter загружать все страницы Держите деятельность всегда поверх стека или в фокусе, когда запугивают приложения-запугивающие приложения? Android: закругленные углы работают в разных версиях Android Android – fragmentTransaction.replace () не работает в библиотеке поддержки 25.1.0 Есть ли проблема с ошибкой Android «Невозможно разрешить виртуальный метод java / beans / PropertyDescriptor»? Android: рисовать фон без GPU OverDraw как Whatsapp

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

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

В принципе, мне нужна функция вроде: listView.getChildAt(0).getPositionInDataModel() .

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

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

У кого-нибудь есть мысли?

Solutions Collecting From Web of "Android ListView: получить индекс данных видимого элемента"

Это очень легко. Просто используйте 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 ();

Просто используйте getPositionForView(View) ( см. Документацию ). Основное преимущество этого метода заключается в том, что он также работает с View s объекта.