Android微调框,选择相同项目时未调用OnItemSelectedListener吗?

时间:2018-11-10 06:03:30

标签: android spinner

由于特定原因,即使用户选择相同的项目,我也需要调用spinner的{​​{1}},但通常不会。所以我不知道怎么可能! 有什么技巧或库可以解决我的问题吗?

2 个答案:

答案 0 :(得分:0)


您可以使用addOnLayoutChangeListener

yourspinner.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
        Toast.makeText(context, "item is : " + yourspinner.getSelectedItemPosition(), Toast.LENGTH_SHORT).show();
    }
});

答案 1 :(得分:0)

确保上下文。您可以作为上下文。

  • MainActivity.this

  • getApplicationContext()

如果您在 Fragment 中使用微调器,则可以将上下文用作

  

getActivity()

String selectedItem;
String data[]={"Australia","Delhi","Agra","Mumbai","America","Tanzania","Arizona"};
spinner=(Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> ad=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,data);
       spinner.setPrompt("Select State");
       spinner.setAdapter(ad);
    String val=spinner.getSelectedItem().toString();

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
           @Override
           public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
               String val=spinner.getSelectedItem().toString();

               selectedItem=data[i];

                 Toast.makeText(MainActivity.this, " "+selectedItem, Toast.LENGTH_SHORT).show();

           }

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

           }
       });