Разница между RowId и Position в параметре onItemLongClick

Я запутался в третьем и четвертом параметрах onItemLongClick (...). Согласно AdapterView.OnItemLongClickListener

position - Позиция представления в списке

id - Идентификатор строки элемента, который был нажат

Я не мог понять, из этого, пожалуйста, пожалуйста.

Ответы

Ответ 1

position - позиция щелкнутого элемента в вашем адаптере (так что вы можете сделать adapter.getItem(position))

row id - это идентификатор, соответствующий этому элементу, то, что ваш адаптер возвращает в методе getItemId().

Ответ 2

Позиция - это позиция представления в родительском. Для ListView это номер строки. Верхняя строка - позиция 0, вторая строка - позиция 1, третья строка - позиция 2 и т.д. Обратите внимание, что если ваш ListView имеет вид заголовка (например, если вы сделали ListView.addHeaderView(View)), то представление заголовка будет позицией 0 и фактические строки начнут свою нумерацию в 1.

Иногда id совпадает с позицией, а иногда и другим. Если вы используете ArrayAdapter или SimpleAdapter, то они одинаковы (кроме случаев, когда есть вид заголовка, а затем они отключены одним). При a CursorAdapter (и, следовательно, a SimpleCursorAdapter) id возвращает идентификатор строки таблицы, то есть _id. Позиция - это длинный, а не int, потому что в базе данных теоретически может быть больше строк, чем int, тогда как a ListView не будет.

Вот несколько других связанных ответов:

Ответ 3

Позиция вернет все имена или значения, помещенные в эту позицию, например, если вы показываете raj,kamal,prateek в списке и выбираете позицию 2, она отображает (возвращает) kamal.

Если вы отправите идентификатор строки, он вернет определенные фиксированные номера или идентификаторы, расположенные в этом элементе, например 1,2,3,4 ... в той же программе, если вы выберете идентификатор строки, который он вернет 2, а для позиции он вернет kamal.