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中的视图(这将是适配器提供的视图)

位置 视图在适配器中的位置。

ID 点击项目的行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处开始编号。

有时 ID 是相同的 位置 有时它是不同的。如果您正在使用 ArrayAdapter 或者 SimpleAdapter 然后它们是相同的(除非有一个标头视图,然后它们就会偏离一个)。为一个 CursorAdapter (因此 SimpleCursorAdapter) 这 ID 返回表的行ID,也就是说 _id.

这是有关此主题的其他一些好答案:

其他提示

这 ?意味着数据类型是未知的,并且可以是任何类型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top