Что делает AdapterViewимеется в виду в методе OnitemClick ()?Какая польза от других параметров в нем? - PullRequest
31 голосов
/ 06 июля 2010
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 ]

28 голосов
/ 06 июля 2010

<?> обозначает общий. Подробнее о них здесь .

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

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

parent AdapterView, где произошел щелчок.

view Представление в AdapterView, по которому щелкнули (это будет представление, предоставленное адаптером)

position Положение обзора в адаптере.

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

AdapterView может быть ListView, GridView, Spinner и т. Д. Знак вопроса в угловых скобках указывает, что это может быть любой из них. Это называется generics в Java. Вы можете использовать parent в коде, чтобы сделать что-то для всего представления. Например, если вы используете 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 совпадает с position , а иногда отличается. Если вы используете ArrayAdapter или SimpleAdapter, то они одинаковы (за исключением случая, когда есть представление заголовка, а затем они отключаются на единицу). Для CursorAdapter (и, следовательно, SimpleCursorAdapter) id возвращает идентификатор строки таблицы, то есть _id.

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

0 голосов
/ 06 июля 2010

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

...