كيف تنبثق قائمة مثل الدوار بدون الدوار في Android؟

StackOverflow https://stackoverflow.com/questions/2129624

سؤال

لديّ عنصر واجهة مستخدم 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();

قد ترغب في استخدام popupmenu

يرى هذه مثال

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top