Что означает 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.

вот еще несколько хороших ответов на эту тему:


The ? означает, что тип данных неизвестен и может быть любым типом.