Android下拉菜单未触发onItemSelected事件

4

在我的应用程序中,我使用了下拉列表控件(spinner),并通过代码 spinner.performClick() 显示它。经过多次尝试,我发现我的代码没有触发 onItemSelected 方法。然后我尝试添加 @Override 注释,但是它会报错并提示删除该注释。以下是代码:

Spinner colorSpinner = new Spinner(this);
ColorFriendsSpinnerAdapter adapter = new ColorFriendsSpinnerAdapter(getApplicationContext(), liste, R.layout.color_dropdown, new String[] { "Icon" }, new int[] { R.id.colorDropdown });
//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
colorSpinner.setAdapter(adapter);
colorSpinner.performClick();

colorSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) { 
               editColorXml(position);
        }

        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

感谢任何帮助,对于我的英语表示抱歉。
2个回答

1
一个ItemSelectedListener的示例,不需要覆盖注释。
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub

            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

colorSpinner.performClick()之前设置监听器。在这段代码中,当没有设置监听器时,会在此刻点击spinner。

1
仍然无法触发onItemSelected方法。我尝试在适配器内设置onClick监听器,但也不起作用。 - Utkan Ozyurek
我在代码中创建Spinner时遇到了问题,无法解决,因此我没有使用它。您可以通过在布局中创建Spinner来解决这个问题。 - Utkan Ozyurek

0

试试这段代码...

final List<String> list=new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
list.add("Item 4");
list.add("Item 5");

final Spinner sp1= (Spinner) findViewById(R.id.spinner1);

ArrayAdapter<String> adp1 = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1,list);
adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp1.setAdapter(adp1);

sp1.setOnItemSelectedListener(new OnItemSelectedListener() {
  @Override
  public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Toast.makeText(getBaseContext(), list.get(position), Toast.LENGTH_SHORT).show();
  }

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接