Java 对android中选定的参数感到困惑

Java 对android中选定的参数感到困惑,java,android,spinner,android-spinner,onitemselectedlistener,Java,Android,Spinner,Android Spinner,Onitemselectedlistener,我在理解Android中的一些概念方面有问题。我不太明白在使用侦听器创建微调器时,我必须定义的onItemSelected方法中,父视图和视图具体指的是什么(例如)。我查看了文档并尝试了一些示例,但这还不够 我的主要问题来自于我试验过的以下情况:我有一个微调器,一个包含项目a、B和C的数组,还有一个链接它们的数组适配器。在onItemSelected方法中,我记录父对象和视图的ID以查看发生了什么 无论我从列表中选择了哪些项(A、B或C),输出都是相同的:父项的ID为W,视图的ID为X。我希望父

我在理解Android中的一些概念方面有问题。我不太明白在使用侦听器创建微调器时,我必须定义的onItemSelected方法中,父视图和视图具体指的是什么(例如)。我查看了文档并尝试了一些示例,但这还不够

我的主要问题来自于我试验过的以下情况:我有一个微调器,一个包含项目a、B和C的数组,还有一个链接它们的数组适配器。在onItemSelected方法中,我记录父对象和视图的ID以查看发生了什么

无论我从列表中选择了哪些项(A、B或C),输出都是相同的:父项的ID为W,视图的ID为X。我希望父项保持不变,但我也希望视图ID在与我的3个项对应的3个不同ID(让我们称它们为X、Y和Z)之间变化。我的理解是,在这样一个列表中,每个项目都有自己的视图(因此ID)


感谢您提供的任何澄清。

我自己运行了一些代码,并验证了我也会这样做

您应该已经知道,接口属于AdapterView类。在此类的javadocs中,您可以找到以下有用的信息:

    /**
     * <p>Callback method to be invoked when an item in this view has been
     * selected. This callback is invoked only when the newly selected
     * position is different from the previously selected position or if
     * there was no selected item.</p>
     *
     * Implementers can call getItemAtPosition(position) if they need to access the
     * data associated with the selected item.
     *
     * @param parent The AdapterView where the selection happened
     * @param view The view within the AdapterView that was clicked
     * @param position The position of the view in the adapter
     * @param id The row id of the item that is selected
     */
    void onItemSelected(AdapterView<?> parent, View view, int position, long id);
结论:


因此,很明显,由于所有微调器项都使用相同的xml布局文件,因此它们使用具有相同属性的相同CheckedTextView,从而使用相同的id。

感谢您的解释。我认为现在有道理了。因此,如果我理解正确,我的假设是错误的,因为我希望微调器中的列表由3个不同的元素组成(每个项目一个),而实际上,只有一个元素包含我所有的3个项目。所以无论我选择哪一个,我的3个项目都将始终是同一个“容器”的一部分,这就是第二个参数。@Tardiv是的。谢谢你提出的好问题,它也帮助我获得了更好的理解。
Spinner spinner = (Spinner) findViewById(R.id.spinner);

// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
    R.array.planets_array, android.R.layout.simple_spinner_item);

// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// Apply the adapter to the spinner
spinner.setAdapter(adapter);
android:id="@android:id/text1"