1

我的应用程序中有一个带有 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) {
            }   
        });
4

3 回答 3

1

只需从您的按钮侦听器中调用以下命令:

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

就这样 :-)

于 2013-07-12T08:52:04.417 回答
0

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

String selection = (String) mSpinnerAdapter.getItem(position);

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

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

于 2013-07-12T08:41:40.370 回答
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));
            }
        });
于 2013-07-12T08:43:16.347 回答