<?>
обозначает общий. Подробнее о них здесь .
Вот что документация говорит о параметрах:
onItemClick(AdapterView<?> parent, View view, int position, long id)
parent AdapterView, где произошел щелчок.
view Представление в AdapterView, по которому щелкнули (это будет представление, предоставленное адаптером)
position Положение обзора в адаптере.
id Идентификатор строки, по которой был нажат элемент.
AdapterView
может быть ListView
, GridView
, Spinner
и т. Д. Знак вопроса в угловых скобках указывает, что это может быть любой из них. Это называется generics в Java. Вы можете использовать parent в коде, чтобы сделать что-то для всего представления. Например, если вы используете ListView
, вы можете скрыть все ListView
следующей строкой кода:
parent.setVisibility(View.GONE);
View
относится к конкретному элементу в AdapterView
. В ListView
это строка. Таким образом, вы можете получить ссылку на TextView
в строке, сказав что-то вроде этого:
TextView myTextView = (TextView) view.findViewById(R.id.textView1);
String text = myTextView.getText().toString();
Позиция - это позиция ракурса в родительском элементе . Для ListView
это номер строки. Верхняя строка - это позиция 0, вторая строка - это позиция 1, третья строка - это позиция 2 и т. Д. Обратите внимание, что если ваш ListView
имеет представление заголовка (как если бы вы сделали ListView.addHeaderView(View)
), то представление заголовка будет позицией 0 и фактические строки начнут нумерацию с 1.
Иногда id совпадает с position , а иногда отличается. Если вы используете ArrayAdapter
или SimpleAdapter
, то они одинаковы (за исключением случая, когда есть представление заголовка, а затем они отключаются на единицу). Для CursorAdapter
(и, следовательно, SimpleCursorAdapter
) id возвращает идентификатор строки таблицы, то есть _id
.
Вот еще несколько хороших ответов на эту тему: