Подтвердить что ты не робот

Что означает AdaptView <?> В методе 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();
        }
    });
4b9b3361

Ответ 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

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