gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Что означает AdaptView <?> В методе OnitemClick()? Какое использование в нем других параметров?
Ответ 1
<?> обозначает общий. Подробнее о них здесь.
Вот что документация говорит о параметрах:
onItemClick(AdapterView<?> parent, View view, int position, long id)
родительский AdapterView, где произошел щелчок.
view Вид в клиенте AdapterView (это будет представление, предоставленное адаптером)
позиция Позиция вида в адаптере.
id Идентификатор строки элемента, который был нажат.
AdapterView может быть ListView, GridView, Spinner и т.д. Значок вопроса внутри угловых скобок указывает, что это может быть любой из них. Это называется generics в Java. Вы можете использовать родительский в коде, чтобы что-то сделать для всего представления. Например, если вы использовали ListView, вы могли бы скрыть всю строку ListView следующей строкой кода:
parent.setVisibility(View.GONE);
View относится к определенному элементу в AdapterView. В a 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 совпадает с позицией, а иногда и другим. Если вы используете ArrayAdapter или SimpleAdapter, то они одинаковы (кроме случаев, когда есть вид заголовка, а затем они отключены одним). Для CursorAdapter (и, следовательно, a SimpleCursorAdapter) id возвращает идентификатор строки таблицы, то есть _id.
Вот еще несколько хороших ответов на эту тему:
Ответ 2
Что? означает, что тип данных неизвестен и может быть любым типом.