25 가지 선택 사항이있는 MultiChoice AlertDialog가 있습니다.MultiChoice AlertDialog, Android에서 제한 선택
나는 그녀가 내가 unckeck 그녀가 할 수 5 선택하는 것이라는 토스트 메시지를 표시 할 6 선택을 선택하면 사용자는 어떤 5 25
에서 선택하도록합니다.
MultiChoice AlertDialog로 가능합니까? 도와주세요!
25 가지 선택 사항이있는 MultiChoice AlertDialog가 있습니다.MultiChoice AlertDialog, Android에서 제한 선택
나는 그녀가 내가 unckeck 그녀가 할 수 5 선택하는 것이라는 토스트 메시지를 표시 할 6 선택을 선택하면 사용자는 어떤 5 25
에서 선택하도록합니다.
MultiChoice AlertDialog로 가능합니까? 도와주세요!
정적 변수 "count"를 만들고 선택한 옵션에서 증가시키고 체크 상자의 onclick 이벤트에서 선택 해제하면 감소합니다. 다음과 같이
는import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class AlertWithCheckBoxActivity extends Activity {
/** Called when the activity is first created. */
static int count = 0;
final CharSequence[] items={".NET","J2EE","PHP"};
boolean[] itemsChecked = new boolean[items.length];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void showDialog(View v)
{
count = 0;
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("Pick a Choice");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String selectedTech="Selected Tech - ";
for (int i = 0; i < items.length; i++) {
if (itemsChecked[i]) {
selectedTech=selectedTech+items[i]+" ";
itemsChecked[i]=false;
}
}
}
});
builder.setMultiChoiceItems(items, new boolean[]{false,false,false}, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked) {
if(count < 5) {
itemsChecked[which] = isChecked;
count++;
}else{
//Display your toast here
}
}else{
count--;
}
}
});
builder.show();
}
}
영업 이익에 대한 정확한 솔루션입니다 :
final boolean[] selected = new boolean[25];
builder.setMultiChoiceItems(R.array.values, selected, new DialogInterface.OnMultiChoiceClickListener() {
int count = 0;
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
count += isChecked ? 1 : -1;
selected[which] = isChecked;
if (count > 5) {
Toast.makeText(getActivity(), "You selected too many.", Toast.LENGTH_SHORT).show();
selected[which] = false;
count--;
((AlertDialog) dialog).getListView().setItemChecked(which, false);
}
}
});
이 좋은 답변이지만, 같은 활동의 여러 인스턴스 그렇게하고, (특정 실행 설정 주어진) 안드로이드에'카운트 가능 'static은 잠재적으로 버그 발생 가능성이 높습니다. –
@ KonradMorawski 그건 아주 유효한 문제입니다. 변수 "count"를 비 정적으로 변경하여이를 방지 할 수 있습니다. – kAnNaN
은 나를위한 '토스트 (toast)'를 보여주지 않습니다 ('활동'의 '컨텍스트'를 전달 중입니다). 사용자가 그 숫자 (코드에서 5)를 더 이상 선택할 수 없도록하고 싶지만 더 선택할 수 있습니다 ... 왜이 대답이 받아 들여지는지 이해할 수 없습니다. –