كيف تنبثق قائمة مثل الدوار بدون الدوار في Android؟
سؤال
لديّ عنصر واجهة مستخدم Spinner في نشاطي والذي يتيح للمستخدمين اختيار اسم القائمة.
عادة ، تتمثل وظيفة الدوار في التبديل بين القوائم ولكن بالنسبة لبضع حالات ، أقوم بتبديل مستمع تغيير التحديد لأداء وظيفة مختلفة مع نفس قائمة الخيارات. بمجرد الاختيار ، يتم استعادة المستمع القديم ويستمر الحياة.
هذا ترتيب سيء وعربات التي تجرها الدواب. بدلاً من ذلك ، أود أن أحصل على وظيفة تأخذ فقط مستمعًا محددًا وبعض المعلمات الأخرى ويظهر قائمة منبثقة منبثقة من قبل المؤشر نفسه (أو المؤشر المتطابق) مثل الدوار ، دون استخدام الدوار نفسه.
هل هناك أي طريقة يمكنني القيام بذلك؟
المحلول
يستخدم AlertDialog.Builder
وتزويد Adapter
عبر setAdapter()
هذا يولد صفوفك.
في حالتك ، لن أستخدم نفس الشيء Cursor
, ، ك Cursor
له فكرة جوهرية للصف الحالي ، وهكذا العبث مع Cursor
بينما يتم استخدامه من قبل الخاص بك SpinnerAdapter
يمكن أن تصل Spinner
. اذهب مع متطابقة Cursor
.
نصائح أخرى
هذا هو أفضل مثال على التفاصيل المنبثقة مثل Spinner باستخدام 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();
إذا لم تكن محدودًا بمستوى 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();