2017-08-30 51 views
0

在我的android应用程序中,我有一个微调,并且我尝试检测何时选择了一个项目。我知道这可以使用setOnItemSelectedListener()方法来完成,但我不明白的是,这工作得很好:android-Spinner setOnItemClickListener不接受实现OnItemClickListener作为参数的命名类

((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 
     // implement onItemClick here 
    }); 

虽然这给出了一个错误,该参数为“不适用”微调:

((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new MyOnItemSelectedListener()); 

哪里MyOnItemSelectedListener是这样的,这是在我的MainActivity嵌套类:

private class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener 
{ 
    public MyOnItemSelectedListener() {} 

    // implement onItemClick here 
} 

我想实现的是不只是运行的代码 - 我已经有牛逼帽子。它的代码很容易阅读(使用我的代码中的事物的真实名称以及我的MainActivity类的结构,使用嵌套类比匿名类更具可读性)。

我如何理解java,除了一个类有一个名字,另一个没有名字,这两个本质上应该是相同的。

回答

1

在您的代码中,您使用IdR.Id.mySpinner)而不是idR.id.mySpinner)。

在你的代码中的两个实现肯定会工作。

初始化微调:

Spinner spinner = new Spinner(getActivity()); 
spinner.setOnItemSelectedListener(new MySpinner()); 

内部类:

private class MySpinner implements AdapterView.OnItemSelectedListener{ 

    public MySpinner(){} 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
} 

这实际上是对我工作的罚款。请咨询您的idlayout

+0

谢谢,它的工作。我不知道为什么当我最后一次尝试时,它现在没有。也许我在某个地方有错误的类型。 – sisisisi

相关问题