Android 알림 대화 상자에 목록보기를 표시하려면 어떻게해야합니까?


291

안드로이드 응용 프로그램에서 AlertDialog에 사용자 정의 목록보기를 표시하고 싶습니다.

어떻게해야합니까?


문자열 목록을 가져온 다음 CharSequence [] 시퀀스를 만든 다음 AlertDialog.Builder를 사용하여 항목을 표시하십시오. 다음은 snapshot feelzdroid.com/2014/12/…
Naruto

답변:


498

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

이 항목을 길게 클릭 할 가능성이 있습니까? 모든 API 레벨에서 작동하는 팝업 메뉴 솔루션을 찾고 있습니다.
wutzebaer

7
@Shvet은 show () 가 대화 상자를 만들고 표시하는 반면 create () 는 대화 상자를 생성 한다고 가정 합니다.
htafoya

이 설정을 어떻게 사용할 수 있지만 목록을 하드 코딩하는 대신 사용자가 이미 가지고있는 구문 분석에서 일부 데이터를 가져와야합니다.
stanley santoso

@stanleysantoso는 자신의 어댑터를 만들고 데이터로 채우고 경고 대화 상자의 어댑터로 설정합니다. dialogBuilder.setAdapter (MyCustomAdapter); 작동합니다
CantThinkOfAnything

1
select_dialog_single_choice 레이아웃은 무엇입니까?
ForceFieldsForDoors

254

설명서에 따르면AlertDialog 다음 과 함께 사용할 수있는 세 가지 종류의 목록이 있습니다 .

  1. 전통적인 단일 선택 목록
  2. 지속적인 단일 선택 목록 (라디오 버튼)
  3. 영구 객관식 목록 (확인란)

아래에 각 예를 들어 보겠습니다.

전통적인 단일 선택 목록

전통적인 단일 선택 목록을 만드는 방법은을 사용하는 것 setItems입니다.

여기에 이미지 설명을 입력하십시오

자바 버전

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

사용자가 목록 항목 컨트롤을 클릭하자마자로 돌아 가기 때문에 확인 버튼이 필요하지 않습니다 OnClickListener.

코 틀린 버전

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

라디오 버튼 목록

여기에 이미지 설명을 입력하십시오

기존 목록보다 라디오 버튼 목록의 장점은 사용자가 현재 설정을 볼 수 있다는 것입니다. 라디오 버튼 목록을 만드는 방법은를 사용하는 것 setSingleChoiceItems입니다.

자바 버전

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

선택한 항목을 여기에 하드 코딩했지만 실제 프로젝트의 클래스 멤버 변수를 사용하여 추적 할 수 있습니다.

코 틀린 버전

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

확인란 목록

여기에 이미지 설명을 입력하십시오

확인란 목록을 만드는 방법은를 사용하는 것 setMultiChoiceItems입니다.

자바 버전

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

여기에 목록의 어떤 항목이 이미 확인되었는지 하드 코딩했습니다. 에서 추적하고 싶을 가능성이 큽니다 ArrayList<Integer>. 자세한 내용은 설명서 예 를 참조하십시오. null모든 항목을 항상 체크 하지 않으려면 체크 된 항목을 설정할 수도 있습니다 .

코 틀린 버전

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

노트

  • 를 들어 context위의 코드는 사용하지 마십시오 getApplicationContext()또는 당신은 얻을 것이다 IllegalStateException(참조 여기에 이유에 대한). 대신 with와 같은 활동 컨텍스트에 대한 참조를 얻으십시오 this.
  • 또한 사용하여 데이터베이스 나 다른 소스에서 목록 항목을 채울 수 있습니다 setAdapter하거나 setCursor또는 전달 Cursor이나 ListAdaptersetSingleChoiceItems또는 setMultiChoiceItems.
  • 목록이 화면에 맞는 것보다 길면 대화 상자가 자동으로 스크롤됩니다. 그래도 정말 긴 목록이 있다면 RecyclerView사용자 정의 대화 상자 를 만들어야한다고 생각합니다 .
  • 위의 모든 예제를 테스트하기 위해 클릭했을 때 대화 상자를 표시하는 것보다 단일 버튼이있는 간단한 프로젝트가있었습니다.

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

관련


2
훌륭합니다. 이제 아이콘을 추가하십시오.)
AaA

1
@AaA, 나는 당신이해야 할 것이라고 생각 사용자 정의 레이아웃 경고 대화 상자 를 사용 RecyclerView하는의 레이아웃에 있습니다.
Suragch

대화 상자 onclick 메소드의 '어떤'은 무엇을 의미합니까?
gonephishing

문서 에 따르면 @gonephishing 은 "클릭 한 버튼 (예 :) BUTTON_POSITIVE또는 클릭 한 항목의 위치"입니다.
Suragch

1
사용자 정의 어댑터로 간단한 목록 (1)을 구현하려면 리스너에서 Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener): 을 클릭하면 항목 위치와 같습니다. 효과가 없습니다. whichonClickBuilder.setOnItemSelectedListener
Miha_x64

122

사용자 정의 대화 상자를 사용할 수 있습니다.

사용자 정의 대화 상자 레이아웃. 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>

당신의 활동에서

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

편집하다:

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

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>

스냅

여기에 이미지 설명을 입력하십시오


1
@Juan-devtopia.coop 당신은 downvote로 upvoting 후 내 게시물을 편집했습니다. 무엇이 잘못
되었는가?

현재 버전에는 아무것도 없었으며 이전 버전에는 모든 어댑터 기능이 없었기 때문에 빈 ListView를 표시했기 때문에 기꺼이 부정적인 투표를 제거했습니다. 3 시간 전의 편집 내용이 아닌 불완전한 답변에 투표했습니다.
Juan Cortés

@ Raghunandan, 나는 당신의 코드를 사용했지만 lv.setAdapter (adapter)에 예외가 있습니다. 선 좀 도와 줄래?
Ahmad Vatani

@Ahmad 예외는 무엇입니까?
Raghunandan

1
@NeilGaliaskarov 예, 스크롤 가능합니다. 목록보기가 스크롤됩니다
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은 무엇입니까?
ForceFieldsForDoors

2
@ArhatBaid 그러나 setMessages에 메시지를 넣을 때 setItems가 작동하지 않습니다. Google에서 검색했지만 찾은 대답은 setTitle에서 메시지를 설정하는 것이 었습니다. 그러나 문제는 setTitle은 몇 개의 문자 만 허용한다는 것입니다. 경고 대화 상자에서 setMessage 및 setItems를 사용하는 방법이 있습니까?
David

@David는 사용자 정의 대화 상자로 이동해야합니다.
Arhat Baid

1
이 솔루션은 ListAdapterwith with setSingleChoiceItems(위의 호출과 매우 유사)를 사용할 수 있기 때문에 매우 좋습니다.
snotyak

예상대로 완벽 ... 최소한의 코드로 수백 개의 항목을 처리합니다. :)
jeet.chanchawat

10

" import android.app.AlertDialog;"가져 오기를 사용하면

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

create와 함께 bc가 필요했고 AlertDialog를 빌드하면 다음에 보여줍니다. 빌더가 아닙니다. (c) Facebamm
Facebamm

@Facebamm 사실이 아닙니다. show()둘 다한다. Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();show()방법의 문서 에서 직접입니다
ᴛʜᴇᴘᴀᴛᴇʟ

맞지만 때로는 눈에 띄게 사용자 인터페이스 오류가 발생했습니다. (c) Facebamm
Facebamm

아니요, 사실이 아닙니다. show ()는 create (). show ()와 동일합니다. / ** *이 빌더에 제공된 인수를 사용하여 {@link AlertDialog}을 작성하고 대화 상자를 즉시 ​​표시합니다. * <p> *이 메소드를 호출하는 것은 기능적으로 다음과 같습니다. * <pre> * AlertDialog dialog = builder.create (); dialog.show (); * </ pre> * / public AlertDialog show () {최종 AlertDialog 대화 상자 = create (); dialog.show (); 리턴 대화창; }
Emanuel S

좋아, 나는 잠시 동안 테스트했고 sry라고 말한다. (c) Facebamm
Facebamm

4

너무 간단합니다

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

초보자로서 나는 당신이 http://www.mkyong.com/android/android-custom-dialog-example/

기본적으로 수행 할 작업

  1. 대화 상자 및 기본 활동에 대한 XML 파일을 작성합니다.
  2. 필요한 장소의 주요 활동에서 android 클래스의 객체를 만듭니다. Dialog
  3. XML 파일을 기반으로 사용자 정의 스타일 및 텍스트 추가
  4. dialog.show()메소드를 호출합니다 .

1

코 틀린에서 :

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
답변에 설명을 추가하십시오.
Mathews Sunny

1
어떤 종류의 설명입니까?
Varsha Prabhakar

1

이것은 사용자 정의 목록 항목과 함께 사용자 정의 레이아웃 대화 상자를 표시하는 방법이며 요구 사항에 따라 사용자 정의 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

1 단계-1 DialogBox의 레이아웃을 만듭니다.

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>

STEP-2 비즈니스 로직에 따라 사용자 정의 목록 항목 레이아웃 생성

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>

STEP-3 원하는 데이터 모델 클래스 생성

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

}

STEP-4 커스텀 어댑터 생성

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

}

STEP-5이 함수를 생성하고이 방법으로 위의 데이터 모델의 ArrayList를 제공하십시오

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

6 단계-둥근 모서리 배경을 대화 상자에 제공

@ 드로어 블 / rectangle_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>

0

AlertDialog에서 EditText 단위를 만든 후 일반적인 용도로 메서드를 호출하는 것이 더 부드럽 지 않습니까?

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

}

이 코드는 질문에 대답 할 수 있지만 문제를 해결하는 방법 및 / 또는 이유에 대한 추가 컨텍스트를 제공하면 답변의 장기적인 가치가 향상됩니다.
Piotr Labunski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.