Что означает AdapterView В методе OnitemClick ()? Какое использование других параметров в нем?

StackOverflow https://stackoverflow.com/questions/3184672

  •  02-10-2019
  •  | 
  •  

Вопрос

gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
        }
    });
Это было полезно?

Решение

А <?> Указывает общего. Узнайте больше о них здесь.

Вот что документация говорит о параметрах:

onItemClick(AdapterView<?> parent, View view, int position, long id)

родительский Адаптервью, где произошел щелчок.

Посмотреть Просмотр в адаптере, который был нажат (это будет представление, предоставленное адаптером)

позиция Положение вида в адаптере.

я бы Идентификатор строки элемента, который был нажат.

А AdapterView может быть ListView, GridView, Spinner, и т. д. знак вопроса внутри угловых кронштейнов указывает, что это может быть любой из них. Это называется дженерики на 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.

Иногда я бы такой же как позиция И иногда это другое. Если вы используете ArrayAdapter или SimpleAdapter Тогда они одинаковы (за исключением случаев, когда есть представление заголовка, а затем они отключены к одному). Для CursorAdapter (и, следовательно, SimpleCursorAdapter) я бы возвращает идентификатор строки таблицы, то есть _id.

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top