Làm cách nào tôi có thể hiển thị chế độ xem danh sách trong Hộp thoại cảnh báo Android?


291

Trong một ứng dụng Android, tôi muốn hiển thị chế độ xem danh sách tùy chỉnh trong AlertDialog.

Tôi có thể làm cái này như thế nào?


Chỉ cần lấy Danh sách các chuỗi, sau đó tạo chuỗi CharSequence [], sau đó sử dụng AlertDialog.Builder để hiển thị các mục. Dưới đây là ví dụ đơn giản nhất với snapshot feelzdroid.com/2014/12/ trên
Naruto

Câu trả lời:


498

Được sử dụng bên dưới mã để hiển thị danh sách tùy chỉnh trong AlertDialog

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();

Có khả năng nào để phát hiện các nhấp chuột dài vào mặt hàng này không? Tôi đang tìm kiếm hàng giờ cho một giải pháp menu bật lên hoạt động trên tất cả các cấp độ api
wutzebaer

7
@Shvet được cho là, show () tạo và hiển thị hộp thoại, trong khi tạo () chỉ tạo nó.
htafoya

Làm cách nào tôi có thể sử dụng thiết lập này nhưng thay vì mã hóa danh sách của mình, tôi cần lấy một số dữ liệu từ phân tích mà người dùng đã có.?
stanley santoso

@stanleyantoso tạo bộ điều hợp của riêng bạn, điền dữ liệu vào dữ liệu và sau đó đặt bộ điều hợp làm bộ điều hợp cho alertdialog: hộp thoại Điều đó sẽ làm việc
CantThinkOfAnything

1
Bố cục select_dialog_single_choice là gì?
ForceFieldsForDoors

254

Theo tài liệu , có ba loại danh sách có thể được sử dụng với AlertDialog:

  1. Danh sách lựa chọn đơn truyền thống
  2. Danh sách lựa chọn đơn liên tục (nút radio)
  3. Danh sách trắc nghiệm liên tục (hộp kiểm)

Tôi sẽ đưa ra một ví dụ về mỗi bên dưới.

Danh sách lựa chọn đơn truyền thống

Cách để tạo một danh sách lựa chọn duy nhất truyền thống là sử dụng setItems.

nhập mô tả hình ảnh ở đây

Phiên bản Java

// 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();

Không cần nút OK vì ngay khi người dùng nhấp vào điều khiển mục danh sách được trả về OnClickListener.

Phiên bản Kotlin

// 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()

Danh sách nút radio

nhập mô tả hình ảnh ở đây

Ưu điểm của danh sách nút radio so với danh sách truyền thống là người dùng có thể thấy cài đặt hiện tại là gì. Cách để tạo một danh sách nút radio là sử dụng setSingleChoiceItems.

Phiên bản Java

// 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();

Tôi đã mã hóa mục được chọn ở đây, nhưng bạn có thể theo dõi nó với một biến thành viên lớp trong một dự án thực tế.

Phiên bản Kotlin

// 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()

Danh sách hộp kiểm

nhập mô tả hình ảnh ở đây

Cách để tạo một danh sách hộp kiểm là sử dụng setMultiChoiceItems.

Phiên bản Java

// 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();

Ở đây tôi cứng mã hóa các mục trong danh sách đã được kiểm tra. Có nhiều khả năng là bạn muốn theo dõi chúng trong một ArrayList<Integer>. Xem ví dụ tài liệu để biết thêm chi tiết. Bạn cũng có thể đặt các mục đã chọn thành nullnếu bạn luôn muốn mọi thứ bắt đầu không được chọn.

Phiên bản Kotlin

// 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()

Ghi chú

  • Đối với contextmã ở trên, không sử dụng getApplicationContext()hoặc bạn sẽ nhận được IllegalStateException(xem tại đây để biết lý do). Thay vào đó, hãy tham khảo bối cảnh hoạt động, chẳng hạn như với this.
  • Bạn cũng có thể cư trú trong mục danh sách từ một cơ sở dữ liệu hoặc nguồn khác sử dụng setAdapterhoặc setCursorhay đi qua trong một Cursorhoặc ListAdaptervào setSingleChoiceItemshoặc setMultiChoiceItems.
  • Nếu danh sách dài hơn sẽ vừa trên màn hình thì hộp thoại sẽ tự động cuộn nó. Tuy nhiên, nếu bạn có một danh sách thực sự dài, tôi đoán rằng có lẽ bạn nên tạo một hộp thoại tùy chỉnh với RecyclerView .
  • Để kiểm tra tất cả các ví dụ ở trên, tôi chỉ có một dự án đơn giản với một nút duy nhất hơn hiển thị hộp thoại khi nhấp vào:

    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
        }
    }

Liên quan


2
Điều này thật tuyệt, giờ hãy thêm biểu tượng;)
AaA

1
@AaA, tôi nghĩ bạn sẽ cần tạo một hộp thoại cảnh báo bố cục tùy chỉnh sử dụng một RecyclerViewbố cục cho điều đó.
Suragch

'' 'trong hộp thoại onclick có nghĩa gì?
gonephishing

@gonephishing, theo tài liệu , đó là "nút được nhấp (ví dụ BUTTON_POSITIVE) hoặc vị trí của mục được nhấp".
Suragch

1
Nếu bạn muốn triển khai danh sách đơn giản (1) với bộ điều hợp tùy chỉnh, hãy sử dụng Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener) : whichtrong trình nghe onClicksẽ bằng với vị trí mục được nhấp. Builder.setOnItemSelectedListenersẽ không có tác dụng.
Miha_x64

122

Bạn có thể sử dụng một hộp thoại tùy chỉnh.

Bố trí hộp thoại tùy chỉnh. 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>

Trong hoạt động của bạn

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();

Biên tập:

Sử dụng alertdialog

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();

tập tin tùy chỉnh

<?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>

Chụp

nhập mô tả hình ảnh ở đây


1
@Juan - devtopia.coop bạn đã chỉnh sửa bài viết của tôi sau khi upvote chỉ để downvote. Bạn có thể nhận xét những gì sai
Raghunandan

Không có gì với phiên bản hiện tại, phiên bản trước đó thiếu tất cả nội dung của bộ điều hợp và chỉ cần hiển thị một ListView trống, tôi sẵn sàng xóa bỏ phiếu bầu tiêu cực của mình ngay bây giờ. Tôi đã bỏ phiếu cho một câu trả lời không đầy đủ, không phải về chỉnh sửa này từ 3 giờ trước.
Juan Cortés

@Raghunandan, tôi đã sử dụng mã của bạn nhưng tôi có ngoại lệ trên lv.setAd CHƯƠNG (bộ chuyển đổi); dòng, bạn có thể giúp tôi?
Ahmad Vatani

@Ahmad Thế nào là bài trừ?
Raghunandan 23/2/2015

1
@NeilGaliaskarov vâng, nó có thể cuộn được. Listview sẽ cuộn
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();

1
M.DoneButton là gì?
ForceFieldsForDoors

2
@ArhatBaid Nhưng setItems không hoạt động khi tôi đặt một tin nhắn trong setMessage. Tôi đã tìm kiếm trong google nhưng câu trả lời tôi tìm thấy là đặt thông báo trong setTitle. Nhưng vấn đề là setTitle chỉ cho phép số lượng ký tự ít. Có cách nào để sử dụng setMessage và setItems trong hộp thoại cảnh báo không?
David

@David cho rằng bạn phải đi hộp thoại tùy chỉnh.
A La Hán Baid

1
Giải pháp này là rất tốt đẹp bởi vì bạn cũng có thể đi với một ListAdaptervới setSingleChoiceItems(rất giống với các cuộc gọi trên)
snotyak

Hoàn hảo như mong đợi ... xử lý hàng trăm mặt hàng với mã tối thiểu. :)
jeet.chanchaw

10

Sử dụng import android.app.AlertDialog;nhập "" và sau đó bạn viết

    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();

bạn cần bc với việc tạo bạn xây dựng AlertDialog khi bạn hiển thị điều này sau đó. không phải là người xây dựng (c) Facebamm
Facebamm

@Facebamm điều đó không đúng. show()làm cả hai. Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();đó là trực tiếp từ show()tài liệu của phương pháp
ᴛʜᴇᴘᴀᴛᴇʟ

Điều đó đúng nhưng đôi khi tôi gặp một số lỗi giao diện người dùng rõ ràng. (c) Facebamm
Facebamm

Không, điều đó không đúng. show () giống hệt với tạo (). show (); / ** * Tạo {@link AlertDialog} với các đối số được cung cấp cho trình tạo * này và ngay lập tức hiển thị hộp thoại. * <p> * Gọi phương thức này giống hệt về mặt chức năng với: * <pre> * AlertDialog hộp thoại = builder.create (); * hộp thoại.show (); * </ pre> * / công khai AlertDialog show () {hộp thoại AlertDialog cuối cùng = tạo (); hộp thoại.show (); hộp thoại trả về; }
Emanuel S

ok, tôi đã thử nghiệm một lúc và tôi nói sry, đó là sự thật. (c) Facebamm
Facebamm

4

Điều này quá đơn giản

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();

3

Là người mới bắt đầu, tôi sẽ đề nghị bạn đi qua http://www.mkyong.com/android/android-custom-dialog-example/

Tôi sẽ tóm tắt những gì nó cơ bản làm

  1. Tạo một tệp XML cho hộp thoại và Hoạt động chính
  2. Trong hoạt động chính ở nơi bắt buộc, tạo một đối tượng của lớp android Dialog
  3. Thêm kiểu dáng và văn bản tùy chỉnh dựa trên tệp XML
  4. Gọi dialog.show()phương thức.

1

Trong 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()
}

1
Thêm một số mô tả cho câu trả lời của bạn.
Mathews Nắng

1
Những loại mô tả?
Varsha Mitchhakar

1

Đây là cách hiển thị hộp thoại bố trí tùy chỉnh với mục danh sách tùy chỉnh, có thể được tùy chỉnh theo yêu cầu của bạn.

nhập mô tả hình ảnh ở đây

BƯỚC - 1 Tạo bố cục của Hộp thoại tức là: -

R.layout.ass que_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>

BƯỚC - 2 Tạo bố cục mục danh sách tùy chỉnh theo logic kinh doanh của bạn

R.layout.item_ass que_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>

BƯỚC - 3 Tạo lớp mô hình Dữ liệu theo lựa chọn của riêng bạn

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;
}

}

BƯỚC - 4 Tạo bộ điều hợp tùy chỉnh

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;
}

}

BƯỚC - 5 Tạo chức năng này và cung cấp ArrayList của mô hình dữ liệu trên trong phương thức này

// 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();
    }

Bước - 6 Đưa nền góc tròn vào hộp thoại

@ drawable / hình chữ nhật_round_corner_assocation_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>

0

Có phải nó sẽ mượt mà hơn khi tạo một phương thức được gọi sau khi tạo đơn vị EditText trong AlertDialog, để sử dụng chung không?

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;
        }
    });
}

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();

}

Mặc dù mã này có thể trả lời câu hỏi, việc cung cấp ngữ cảnh bổ sung về cách thức và / hoặc lý do giải quyết vấn đề sẽ cải thiện giá trị lâu dài của câu trả lời.
Piotr Labunski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.