AdapterView <?>在OnitemClick()方法中意味着什么?它的其他参数有什么用?

Nan*_*l T 31 android android-adapterview

gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
        }
    });
Run Code Online (Sandbox Code Playgroud)

Mat*_*y F 28

<?>指示通用.在这里阅读更多相关信息.

以下是文档中有关参数的说明:

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

parent 发生单击的AdapterView.

view 已单击的AdapterView中的视图(这将是适配器提供的视图)

position 视图在适配器中的位置.

id 已单击的项的行ID.

AdapterView可能是ListView,GridView,Spinner等尖括号内的问号表明它可以是任何人.这在Java中称为泛型.您可以在代码中使用parent来对整个视图执行某些操作.例如,如果您使用的是,则ListView可以ListView通过以下代码行隐藏整体:

parent.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

View指内的特定项目AdapterView.在ListView它是行.因此,您可以通过这样的方式获得对TextView行内的引用:

TextView myTextView = (TextView) view.findViewById(R.id.textView1);
String text = myTextView.getText().toString();
Run Code Online (Sandbox Code Playgroud)

位置视图视图的位置.对于a ,它是行号.顶行是位置0,第二行是位置1,第三行是位置2,等等.请注意,如果你有一个标题视图(就像你做的那样),那么标题视图将是位置0,实际行将是从1开始编号.ListViewListViewListView.addHeaderView(View)

有时id位置相同,有时它是不同的.如果你使用的是ArrayAdapter或者SimpleAdapter它们是相同的(除了有一个标题视图,然后它们被一个关闭).对于a CursorAdapter(以及因此a SimpleCursorAdapter),id返回表的行id,即_id.

以下是关于此主题的一些其他好的答案: