如何单击按钮以启动微调器控件的ItemSelected事件?

时间:2013-07-12 08:22:03

标签: android

我的应用程序中有一个带有setOnItemSelectedListener的微调器控件,当我选择微调器的一个项目时,将启动onItemSelected事件。 现在我希望单击一个按钮来启动onItemSelected事件,我该怎么办?谢谢!

spinnerFolder.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
                //Do Business Logic
            }           
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }   
        });

3 个答案:

答案 0 :(得分:1)

只需从按钮监听器中调用以下内容:

spinnerFolder.getOnItemSelectedListener().onItemSelected(spinnerFolder, spinnerFolder.getSelectedView(), spinnerFolder.getSelectedItemPosition(), spinnderFolder.getSelectedItemId());

这就是全部: - )

答案 1 :(得分:0)

您的微调器的onItemSelected的第三个参数(int arg2)是位置,因此您可以通过

获取当前选择
String selection = (String) mSpinnerAdapter.getItem(position);

如果您没有自定义适配器,请使用mSpinner.getItemAtPosition(position)

将当前选择存储在某处,然后在onClickListener中为您的按钮选择它。

答案 2 :(得分:0)

当您使用某些数据填充微调器时,您将在SpinnerAdapter中拥有某种列表对象(字符串,自定义对象,等等),您将保留对该列表的引用,让我们称之为: private List<Object> dataList = ...

首先,我将创建一个处理特定数据对象的方法:     protected void doBusinessLogic(Object myObj){        //做让你快乐的事情     }

然后从侦听器调用它:

spinnerFolder.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3)    {
                // args2 is the position from backed data list
                doBusinessLogic(dataList.get(args2));
            }           
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }   
        });

然后从按钮侦听器再次调用上面的方法,但是你得到的对象索引来自spinnerFolder.getSelectedItemPosition();

myButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                int dataIndex = spinnerFolder.getSelectedItemPosition();
                doBusinessLogic(dataList.get(index));
            }
        });