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
Что? означает, что тип данных неизвестен и может быть любым типом.