Wie kann ich eine Listenansicht in einem Android-Warndialog anzeigen?

291

In einer Android-Anwendung möchte ich eine benutzerdefinierte Listenansicht in einem AlertDialog anzeigen.

Wie kann ich das machen?

Brad Larson
quelle
Nehmen Sie einfach die Liste der Zeichenfolgen, erstellen Sie eine Folge von CharSequence [] und zeigen Sie die Elemente mit AlertDialog.Builder an. Hier ist das einfachste Beispiel mit Schnappschuss sensezdroid.com/2014/12/…
Naruto

Antworten:

498

Wird unter dem folgenden Code verwendet, um eine benutzerdefinierte Liste in AlertDialog anzuzeigen

AlertDialog.Builder builderSingle = new AlertDialog.Builder(DialogActivity.this);
builderSingle.setIcon(R.drawable.ic_launcher);
builderSingle.setTitle("Select One Name:-");

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(DialogActivity.this, android.R.layout.select_dialog_singlechoice);
arrayAdapter.add("Hardik");
arrayAdapter.add("Archit");
arrayAdapter.add("Jignesh");
arrayAdapter.add("Umang");
arrayAdapter.add("Gatti");

builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

builderSingle.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String strName = arrayAdapter.getItem(which);
                AlertDialog.Builder builderInner = new AlertDialog.Builder(DialogActivity.this);
                builderInner.setMessage(strName);
                builderInner.setTitle("Your Selected Item is");
                builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,int which) {
                                dialog.dismiss();
                            }
                        });
                builderInner.show();
            }
        });
builderSingle.show();
Karan Singh Rajpoot
quelle
Gibt es eine Möglichkeit, lange Klicks auf diese Elemente zu erkennen? Ich bin stundenlang auf der Suche nach einer Popup-Menü-Lösung, die auf allen API-Ebenen
funktioniert
7
@Shvet angeblich zeigt show () den Dialog und zeigt ihn an, während create () ihn nur erstellt.
Htafoya
Wie kann ich dieses Setup verwenden, aber anstatt meine Liste fest zu codieren, muss ich einige Daten aus der Analyse abrufen, über die der Benutzer bereits verfügt.
Stanley Santoso
@stanleysantoso Erstellen Sie Ihren eigenen Adapter, füllen Sie ihn mit Daten und legen Sie ihn dann als Adapter für den alertdialog fest: dialogBuilder.setAdapter (MyCustomAdapter); Das sollte funktionieren
CantThinkOfAnything
1
Was ist das Layout select_dialog_single_choice?
ForceFieldsForDoors
254

Gemäß der Dokumentation gibt es drei Arten von Listen, die mit einem verwendet werden können AlertDialog:

  1. Traditionelle Single-Choice-Liste
  2. Persistente Single-Choice-Liste (Optionsfelder)
  3. Persistente Multiple-Choice-Liste (Kontrollkästchen)

Ich werde unten jeweils ein Beispiel geben.

Traditionelle Single-Choice-Liste

Der Weg, um eine traditionelle Single-Choice-Liste zu erstellen, ist die Verwendung setItems.

Geben Sie hier die Bildbeschreibung ein

Java-Version

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose an animal");

// add a list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
builder.setItems(animals, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which) {
            case 0: // horse
            case 1: // cow
            case 2: // camel
            case 3: // sheep
            case 4: // goat
        }
    }
});

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

Es ist keine OK-Schaltfläche erforderlich, da das Steuerelement, sobald der Benutzer auf ein Listenelement klickt, an das zurückgegeben wird OnClickListener.

Kotlin-Version

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose an animal")

// add a list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
builder.setItems(animals) { dialog, which ->
    when (which) {
        0 -> { /* horse */ }
        1 -> { /* cow   */ }
        2 -> { /* camel */ }
        3 -> { /* sheep */ }
        4 -> { /* goat  */ }
    }
}

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

Optionsfeldliste

Geben Sie hier die Bildbeschreibung ein

Der Vorteil der Optionsfeldliste gegenüber der herkömmlichen Liste besteht darin, dass der Benutzer die aktuelle Einstellung sehen kann. Sie können eine Optionsfeldliste erstellen setSingleChoiceItems.

Java-Version

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose an animal");

// add a radio button list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
int checkedItem = 1; // cow
builder.setSingleChoiceItems(animals, checkedItem, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user checked an item
    }
});

// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user clicked OK
    }
});
builder.setNegativeButton("Cancel", null);

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

Ich habe das ausgewählte Element hier hart codiert, aber Sie können es mit einer Variablen für Klassenmitglieder in einem realen Projekt verfolgen.

Kotlin-Version

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose an animal")

// add a radio button list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
val checkedItem = 1 // cow
builder.setSingleChoiceItems(animals, checkedItem) { dialog, which ->
    // user checked an item
}


// add OK and Cancel buttons
builder.setPositiveButton("OK") { dialog, which ->
    // user clicked OK
}
builder.setNegativeButton("Cancel", null)

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

Checkbox-Liste

Geben Sie hier die Bildbeschreibung ein

Sie können eine Kontrollkästchenliste erstellen setMultiChoiceItems.

Java-Version

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose some animals");

// add a checkbox list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
boolean[] checkedItems = {true, false, false, true, false};
builder.setMultiChoiceItems(animals, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        // user checked or unchecked a box
    }
});

// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user clicked OK
    }
});
builder.setNegativeButton("Cancel", null);

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

Hier habe ich fest codiert, welche Elemente in der Liste bereits überprüft wurden. Es ist wahrscheinlicher, dass Sie sie in einem verfolgen möchten ArrayList<Integer>. Weitere Informationen finden Sie im Dokumentationsbeispiel . Sie können die aktivierten Elemente auch auf einstellen, nullwenn immer alles deaktiviert sein soll.

Kotlin-Version

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose some animals")

// add a checkbox list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
val checkedItems = booleanArrayOf(true, false, false, true, false)
builder.setMultiChoiceItems(animals, checkedItems) { dialog, which, isChecked ->
    // user checked or unchecked a box
}

// add OK and Cancel buttons
builder.setPositiveButton("OK") { dialog, which ->
    // user clicked OK
}
builder.setNegativeButton("Cancel", null)

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

Anmerkungen

  • contextVerwenden getApplicationContext()Sie für den im obigen Code nicht verwendeten, sonst erhalten Sie eine IllegalStateException(siehe hier für warum). Holen Sie sich stattdessen einen Verweis auf den Aktivitätskontext, z. B. mit this.
  • Sie können auch die Listenelemente aus einer Datenbank füllen oder einer anderen Quelle setAdapteroder setCursoroder Weitergabe in eine Cursoroder ListAdapterin die setSingleChoiceItemsoder setMultiChoiceItems.
  • Wenn die Liste länger ist als auf den Bildschirm passt, wird sie im Dialogfeld automatisch gescrollt. Wenn Sie jedoch eine sehr lange Liste haben, sollten Sie wahrscheinlich einen benutzerdefinierten Dialog mit einer RecyclerView erstellen .
  • Um alle obigen Beispiele zu testen, hatte ich nur ein einfaches Projekt mit einer einzigen Schaltfläche, das beim Klicken auf den Dialog angezeigt wurde:

    import android.support.v7.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        Context context;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            context = this;
        }
    
        public void showAlertDialogButtonClicked(View view) {
    
            // example code to create alert dialog lists goes here
        }
    }
    

verbunden

Suragch
quelle
2
Das ist großartig, jetzt füge Symbole hinzu;)
AaA
1
@AaA, ich denke, Sie müssten einen benutzerdefinierten Layout-Warnungsdialog erstellen , der ein RecyclerViewim Layout dafür verwendet.
Suragch
Was bedeutet das "Was" in der Dialog-On-Click-Methode?
Gonephishing
@gonephishing ist laut Dokumentation "die Schaltfläche, auf die geklickt wurde (z. B. BUTTON_POSITIVE) oder die Position des angeklickten Elements".
Suragch
1
Wenn Sie eine einfache Liste (1) mit einem benutzerdefinierten Adapter implementieren möchten, verwenden Sie Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener): whichIn Listener entspricht dies der onClickPosition des angeklickten Elements. Builder.setOnItemSelectedListenerwird keine Wirkung haben.
Miha_x64
122

Sie können einen benutzerdefinierten Dialog verwenden.

Benutzerdefiniertes Dialoglayout. list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ListView
        android:id="@+id/lv"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"/>
</LinearLayout>

In Ihrer Tätigkeit

Dialog dialog = new Dialog(Activity.this);
       dialog.setContentView(R.layout.list)

ListView lv = (ListView ) dialog.findViewById(R.id.lv);
dialog.setCancelable(true);
dialog.setTitle("ListView");
dialog.show();

Bearbeiten:

Alertdialog verwenden

String names[] ={"A","B","C","D"};
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = getLayoutInflater();
View convertView = (View) inflater.inflate(R.layout.custom, null);
alertDialog.setView(convertView);
alertDialog.setTitle("List");
ListView lv = (ListView) convertView.findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names);
lv.setAdapter(adapter);
alertDialog.show();

custom.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</ListView>

Schnappen

Geben Sie hier die Bildbeschreibung ein

Raghunandan
quelle
1
@Juan - devtopia.coop du hast meinen Beitrag nach dem Upvoting bearbeitet, nur um das Downvote zu machen. Könnten Sie kommentieren, was falsch ist
Raghunandan
Nichts mit der aktuellen Version, der vorherigen fehlte das gesamte Adaptermaterial und zeigte daher nur eine leere ListView, ich entferne jetzt gerne meine negative Stimme. Ich habe über eine unvollständige Antwort abgestimmt, nicht über diese Bearbeitung von vor 3 Stunden.
Juan Cortés
@Raghunandan, ich habe Ihren Code verwendet, aber ich habe eine Ausnahme für lv.setAdapter (Adapter); Linie, kannst du mir helfen?
Ahmad Vatani
@ Ahmad was ist die excpetion?
Raghunandan
1
@NeilGaliaskarov ja es ist scrollbar. Listview wird scrollen
Raghunandan
44
final CharSequence[] items = {"A", "B", "C"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Make your selection");
builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        // Do something with the selection
        mDoneButton.setText(items[item]);
    }
});
AlertDialog alert = builder.create();
alert.show();
Arhat Baid
quelle
1
Was ist m.DoneButton?
ForceFieldsForDoors
2
@ArhatBaid Aber setItems funktioniert nicht, wenn ich eine Nachricht in setMessage schreibe. Ich habe in Google gesucht, aber die Antwort, die ich gefunden habe, war, die Nachricht in setTitle zu setzen. Das Problem ist jedoch, dass setTitle nur wenige Zeichen zulässt. Gibt es eine Möglichkeit, setMessage und setItems im Alarmdialog zu verwenden?
David
@David dafür musst du dich für einen benutzerdefinierten Dialog entscheiden.
Arhat Baid
1
Diese Lösung ist sehr schön, weil Sie auch mit einem ListAdaptermit setSingleChoiceItems(sehr ähnlich wie oben genannt)
Snotyak
Perfekt wie erwartet ... verarbeitet Hunderte von Elementen mit minimalem Code. :)
jeet.chanchawat
10

Verwenden Sie den import android.app.AlertDialog;Import " " und dann schreiben Sie

    String[] items = {"...","...."};             
    AlertDialog.Builder build = new AlertDialog.Builder(context);
    build.setItems(items, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //do stuff....
        }
    }).create().show();
Facebamm
quelle
Sie brauchten bc mit create Sie erstellen den AlertDialog, den Sie dann zeigen. nicht der Erbauer. (c) Facebamm
Facebamm
@Facebamm das stimmt nicht. show()macht beides. Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();das ist direkt aus der show()Dokumentation der Methode
ᴛʜᴇᴘᴀᴛᴇʟ
Das ist richtig, aber manchmal habe ich einige sichtbare Fehler in der Benutzeroberfläche. (c) Facebamm
Facebamm
Nein, das ist nicht wahr. show () ist identisch mit create (). show (); / ** * Erstellt einen {@link AlertDialog} mit den Argumenten, die diesem * Builder übergeben wurden, und zeigt den Dialog sofort an. * <p> * Der Aufruf dieser Methode ist funktional identisch mit: * <pre> * AlertDialog dialog = builder.create (); * dialog.show (); * </ pre> * / public AlertDialog show () {final AlertDialog dialog = create (); dialog.show (); Rückgabedialog; }
Emanuel S
ok, ich habe eine Weile getestet und ich sage sry, das ist wahr. (c) Facebamm
Facebamm
4

Das ist zu einfach

final CharSequence[] items = {"Take Photo", "Choose from Library", "Cancel"};

AlertDialog.Builder builder = new AlertDialog.Builder(MyProfile.this);

builder.setTitle("Add Photo!");
builder.setItems(items, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int item) {
        if (items[item].equals("Take Photo")) {
            getCapturesProfilePicFromCamera();
        } else if (items[item].equals("Choose from Library")) {
            getProfilePicFromGallery();
        } else if (items[item].equals("Cancel")) {
            dialog.dismiss();
        }
    }
});
builder.show();
Jaydeep purohit
quelle
3

Als Anfänger würde ich vorschlagen, dass Sie http://www.mkyong.com/android/android-custom-dialog-example/ durchgehen.

Ich werde zusammenfassen, was es im Grunde tut

  1. Erstellt eine XML-Datei für den Dialog und die Hauptaktivität
  2. In der Hauptaktivität an der gewünschten Stelle erstellt ein Objekt der Android-Klasse Dialog
  3. Fügt benutzerdefiniertes Styling und Text basierend auf der XML-Datei hinzu
  4. Ruft die dialog.show()Methode auf.
cjds
quelle
1

In Kotlin:

fun showListDialog(context: Context){
    // setup alert builder
    val builder = AlertDialog.Builder(context)
    builder.setTitle("Choose an Item")

    // add list items
    val listItems = arrayOf("Item 0","Item 1","Item 2")
    builder.setItems(listItems) { dialog, which ->
        when (which) {
            0 ->{
                Toast.makeText(context,"You Clicked Item 0",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            1->{
                Toast.makeText(context,"You Clicked Item 1",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            2->{
                Toast.makeText(context,"You Clicked Item 2",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
        }
    }

    // create & show alert dialog
    val dialog = builder.create()
    dialog.show()
}
Varsha Prabhakar
quelle
1
Fügen Sie Ihrer Antwort eine Beschreibung hinzu.
Mathews Sunny
1
Welche Art von Beschreibung?
Varsha Prabhakar
1

So zeigen Sie einen benutzerdefinierten Layoutdialog mit einem benutzerdefinierten Listenelement an, der gemäß Ihren Anforderungen angepasst werden kann.

Geben Sie hier die Bildbeschreibung ein

SCHRITT - 1 Erstellen Sie das Layout der Dialogbox, dh: -

R.layout.assignment_dialog_list_view

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/rectangle_round_corner_assignment_alert"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv_popup_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:singleLine="true"
        android:paddingStart="4dp"
        android:text="View as:"
        android:textColor="#4f4f4f" />

    <ListView
        android:id="@+id/lv_assignment_users"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

SCHRITT - 2 Erstellen Sie ein benutzerdefiniertes Listenelementlayout gemäß Ihrer Geschäftslogik

R.layout.item_assignment_dialog_list_layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:padding="4dp"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/iv_user_profile_image"
        android:visibility="visible"
        android:layout_width="42dp"
        android:layout_height="42dp" />
    <TextView
        android:id="@+id/tv_user_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="8dp"
        android:layout_marginStart="8dp"
        android:paddingBottom="8dp"
        android:textColor="#666666"
        android:textSize="18sp"
        tools:text="ABCD XYZ" />
</LinearLayout>

SCHRITT - 3 Erstellen Sie eine Datenmodellklasse Ihrer Wahl

public class AssignmentUserModel {

private String userId;
private String userName;
private String userRole;
private Bitmap userProfileBitmap;

public AssignmentUserModel(String userId, String userName, String userRole, Bitmap userProfileBitmap) {
    this.userId = userId;
    this.userName = userName;
    this.userRole = userRole;
    this.userProfileBitmap = userProfileBitmap;
}


public String getUserId() {
    return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserRole() {
    return userRole;
}

public void setUserRole(String userRole) {
    this.userRole = userRole;
}

public Bitmap getUserProfileBitmap() {
    return userProfileBitmap;
}

public void setUserProfileBitmap(Bitmap userProfileBitmap) {
    this.userProfileBitmap = userProfileBitmap;
}

}

SCHRITT - 4 Erstellen Sie einen benutzerdefinierten Adapter

public class UserListAdapter extends ArrayAdapter<AssignmentUserModel> {
private final Context context;
private final List<AssignmentUserModel> userList;

public UserListAdapter(@NonNull Context context, int resource, @NonNull List<AssignmentUserModel> objects) {
    super(context, resource, objects);
    userList = objects;
    this.context = context;
 }

@SuppressLint("ViewHolder")
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.item_assignment_dialog_list_layout, parent, false);
    ImageView profilePic = rowView.findViewById(R.id.iv_user_profile_image);
    TextView userName = rowView.findViewById(R.id.tv_user_name);
    AssignmentUserModel user = userList.get(position);

    userName.setText(user.getUserName());

    Bitmap bitmap = user.getUserProfileBitmap();

    profilePic.setImageDrawable(bitmap);

    return rowView;
}

}}

SCHRITT - 5 Erstellen Sie diese Funktion und stellen Sie in dieser Methode die ArrayList des obigen Datenmodells bereit

// Pass list of your model as arraylist
private void showCustomAlertDialogBoxForUserList(ArrayList<AssignmentUserModel> allUsersList) {
        final Dialog dialog = new Dialog(mActivity);
        dialog.setContentView(R.layout.assignment_dialog_list_view);
        if (dialog.getWindow() != null) {
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // this is optional
        }
        ListView listView = dialog.findViewById(R.id.lv_assignment_users);
        TextView tv = dialog.findViewById(R.id.tv_popup_title);
        ArrayAdapter arrayAdapter = new UserListAdapter(context, R.layout.item_assignment_dialog_list_layout, allUsersList);
        listView.setAdapter(arrayAdapter);
        listView.setOnItemClickListener((adapterView, view, which, l) -> {
            Log.d(TAG, "showAssignmentsList: " + allUsersList.get(which).getUserId());
           // TODO : Listen to click callbacks at the position
        });
        dialog.show();
    }

Schritt - 6 Geben Sie dem Dialogfeld einen Hintergrund mit runden Ecken

@ drawable / rechteck_round_corner_assignment_alert

    <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffffff" />
    <corners android:radius="16dp" />
    <padding
        android:bottom="16dp"
        android:left="16dp"
        android:right="16dp"
        android:top="16dp" />
</shape>
Divyanshu Kumar
quelle
0

Ist es nicht einfacher, eine Methode zu erstellen, die nach der Erstellung der EditText-Einheit in einem AlertDialog für den allgemeinen Gebrauch aufgerufen wird?

public static void EditTextListPicker(final Activity activity, final EditText EditTextItem, final String SelectTitle, final String[] SelectList) {
    EditTextItem.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setTitle(SelectTitle);
            builder.setItems(SelectList, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogInterface, int item) {
                    EditTextItem.setText(SelectList[item]);
                }
            });
            builder.create().show();
            return false;
        }
    });
}
Jan Bergström
quelle
0
private void AlertDialogue(final List<Animals> animals) {
 final AlertDialog.Builder alertDialog = new AlertDialog.Builder(AdminActivity.this);
 alertDialog.setTitle("Filter by tag");

 final String[] animalsArray = new String[animals.size()];

 for (int i = 0; i < tags.size(); i++) {
  animalsArray[i] = tags.get(i).getanimal();

 }

 final int checkedItem = 0;
 alertDialog.setSingleChoiceItems(animalsArray, checkedItem, new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {

   Log.e(TAG, "onClick: " + animalsArray[which]);

  }
 });


 AlertDialog alert = alertDialog.create();
 alert.setCanceledOnTouchOutside(false);
 alert.show();

}
Sahil Gaikwad
quelle
Während dieser Code die Frage möglicherweise beantwortet, würde die Bereitstellung eines zusätzlichen Kontexts darüber, wie und / oder warum das Problem gelöst wird, den langfristigen Wert der Antwort verbessern.
Piotr Labunski