我的活动中有一个微调器小部件,可让用户选择列表名称。
通常,微调器的功能是在列表之间切换,但在某些情况下,我换掉了选择更改侦听器以使用相同的选项列表执行不同的功能。一旦做出选择,旧的听众就会恢复,生活还要继续。
这是一个糟糕和错误的安排。相反,我想要一个函数,它只接受一个选择侦听器和一些其他参数,并显示一个弹出列表,该列表由与微调器相同的光标(或相同的光标)填充,而不使用微调器本身。
有什么办法可以做到这一点吗?
这是弹出细节的最佳示例,例如使用 AlertDialog 和 AlertDialog.Builder 的微调器
AlertDialog dialog;
final CharSequence[] items = { "Item1", "Item2" };
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(title);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int pos) {
switch (pos) {
case 0:
{
Toast.makeText(this,"Clicked on:"+items[pos],Toast.LENGTH_SHORT).show();
}break;
case 1:
{
Toast.makeText(this,"Clicked on:"+items[pos],Toast.LENGTH_SHORT).show();
}break;
}
}});
dialog=builder.create();
dialog.show();
使用AlertDialog.Builder
并提供生成行的通Adapter
孔。setAdapter()
在您的情况下,我不会使用相同的Cursor
,因为 aCursor
具有当前行的内在概念,因此弄乱Cursor
您使用的 whileSpinnerAdapter
可能会搞砸Spinner
. 使用相同的Cursor
.
如果您不受 API 级别 11 的限制,那么 listPopupWindow接近您想要的。
CharSequence[] items = {"Mangoes", "Bananas", "Grapes"};
new AlertDialog.Builder(getActivity())
.setTitle("Action")
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if(item==0){
// Mangoes selected
}
else if(item==1){
// Bananas selected
}
else if(item==2){
// Grapes selected
}
}
})
.show();