如何在对话框中为 Spinner 实现 OnItemSelectedListener
How to implement a OnItemSelectedListener for Spinner in Dialog Box
我的 MainActivity
中有一个对话框,可通过触摸布局中的齿轮按钮激活。当它出现时,它包含一个下拉列表 Spinner
。 Spinner
工作并生成一个可滚动的项目列表,所以这至少很好。
尽管如此,我仍然坚持正确应用有效的 OnSpinnerItemSelectedListener
,我想自定义它以便为每个选定的项目提供响应。
有没有人可以就如何最好地应用 Listener 并使其正常工作提供建议来帮助我?非常感谢您的帮助!
在下面的代码中,我只包含了我的 MainActivity
中引用该框内的对话框和微调器的部分。如果您需要更多代码,请告诉我 - 我非常乐意提供更多信息! PowerSpinnerView
引用了我正在使用的 Spinner
的类型(来自在我的 Gradle 文件中实施的第三方依赖项)。
options = findViewById(R.id.optionscog);
options.setOnClickListener(new View.OnClickListener() {
private PowerSpinnerView spItems;
ArrayAdapter arrayAdapter;
@Override
public void onClick(View view) {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.activity_options_menu);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(true);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
View back = dialog.findViewById(R.id.arrow);
PowerSpinnerView powerSpinnerView = (PowerSpinnerView)
dialog.findViewById(R.id.spItems);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
back.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Bitmap map = takeScreenShot(MainActivity.this);
Bitmap fast = fastblur(map, 50);
final Drawable draw=new BitmapDrawable(getResources(),fast);
dialog.getWindow().setBackgroundDrawable(draw);
dialog.getWindow().setAttributes(lp);
dialog.show();
}
});
您使用来自第 3 方的 PowerSpinnerView
,所以我查看了它的 documentation 以获得 click listener
:
powerSpinnerView.setOnSpinnerItemSelectedListener(new OnSpinnerItemSelectedListener<String>() {
@Override public void onItemSelected(int oldIndex, @Nullable String oldItem, int newIndex, String newItem) {
// do whatever you need here
}
});
您 select 的项目是 newItem
并且它的索引是 new index
要保存微调器选择,您只需在 XML 文件中添加一个属性:
app:spinner_preference_name="spinner_chs"
所有的保存工作都是由3rd party library
完成的
我的 MainActivity
中有一个对话框,可通过触摸布局中的齿轮按钮激活。当它出现时,它包含一个下拉列表 Spinner
。 Spinner
工作并生成一个可滚动的项目列表,所以这至少很好。
尽管如此,我仍然坚持正确应用有效的 OnSpinnerItemSelectedListener
,我想自定义它以便为每个选定的项目提供响应。
有没有人可以就如何最好地应用 Listener 并使其正常工作提供建议来帮助我?非常感谢您的帮助!
在下面的代码中,我只包含了我的 MainActivity
中引用该框内的对话框和微调器的部分。如果您需要更多代码,请告诉我 - 我非常乐意提供更多信息! PowerSpinnerView
引用了我正在使用的 Spinner
的类型(来自在我的 Gradle 文件中实施的第三方依赖项)。
options = findViewById(R.id.optionscog);
options.setOnClickListener(new View.OnClickListener() {
private PowerSpinnerView spItems;
ArrayAdapter arrayAdapter;
@Override
public void onClick(View view) {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.activity_options_menu);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(true);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
View back = dialog.findViewById(R.id.arrow);
PowerSpinnerView powerSpinnerView = (PowerSpinnerView)
dialog.findViewById(R.id.spItems);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
back.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Bitmap map = takeScreenShot(MainActivity.this);
Bitmap fast = fastblur(map, 50);
final Drawable draw=new BitmapDrawable(getResources(),fast);
dialog.getWindow().setBackgroundDrawable(draw);
dialog.getWindow().setAttributes(lp);
dialog.show();
}
});
您使用来自第 3 方的 PowerSpinnerView
,所以我查看了它的 documentation 以获得 click listener
:
powerSpinnerView.setOnSpinnerItemSelectedListener(new OnSpinnerItemSelectedListener<String>() {
@Override public void onItemSelected(int oldIndex, @Nullable String oldItem, int newIndex, String newItem) {
// do whatever you need here
}
});
您 select 的项目是 newItem
并且它的索引是 new index
要保存微调器选择,您只需在 XML 文件中添加一个属性:
app:spinner_preference_name="spinner_chs"
所有的保存工作都是由3rd party library
完成的