【问题标题】:What does AdapterView<?> mean in the OnitemClick() Method? What is the use of other parameters in it?OnitemClick() 方法中的 AdapterView<?> 是什么意思?里面的其他参数有什么用?
【发布时间】:2011-03-12 05:03:55
【问题描述】:
gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
        }
    });

【问题讨论】:

    标签: android android-adapterview


    【解决方案1】:

    那个?表示数据类型未知,可以是任意类型。

    【讨论】:

    • 您添加了适配器并知道类型 - 所以只需进行类型转换即可获得您想要的。
    【解决方案2】:

    &lt;?&gt; 表示通用。阅读更多关于他们的信息here

    这是documentation 对参数的说明:

    onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id)

    parent点击发生的AdapterView。

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

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

    id被点击的项目的行ID。

    AdapterView 可以是ListViewGridViewSpinner 等。尖括号内的问号表示它可以是其中任何一个。这在 Java 中称为generics。您可以在代码中使用 parent 来对整个视图执行某些操作。例如,如果您使用的是 ListView,您可以通过以下代码行隐藏整个 ListView

    parent.setVisibility(View.GONE);
    

    View 指的是AdapterView 中的特定项目。在ListView 中,它是行。因此,您可以通过这样说来获得对一行中TextView 的引用:

    TextView myTextView = (TextView) view.findViewById(R.id.textView1);
    String text = myTextView.getText().toString();
    

    positionviewparent中的位置。对于ListView,它是行号。第一行是位置 0,第二行是位置 1,第三行是位置 2,依此类推。请注意,如果您的 ListView 具有标题视图(就像您使用 ListView.addHeaderView(View) 一样),那么标题视图将是位置0 并且实际的行将从 1 开始编号。

    有时 idposition 相同,有时又不同。如果您使用的是ArrayAdapterSimpleAdapter,那么它们是相同的(除非有一个标题视图,然后它们被关闭了一个)。对于CursorAdapter(因此是SimpleCursorAdapter),id 返回表的行 id,即_id

    以下是有关此主题的其他一些不错的答案:

    【讨论】:

    • 如何使用父对象获取AutoCompleteTextView的id?
    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 2017-05-29
    • 2016-03-20
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2011-11-17
    相关资源
    最近更新 更多