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