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