확인란이있는 대화 상자가 있는데 옵션을 선택하고 확인을 누르면 다른 작업을 시도하고있었습니다. 나는 내가 자습서를 읽은 후에 내가 뭘하는지 알았다고 생각했지만, 나는 그것을 확인하지 않고 그냥 "모든 것"이라고 말하면 좋다. 그래서 if 문이 제대로 작동하지 않는 것 같지만 왜 그럴지 모르겠습니다.Android 체크 박스 대화 상자 (쉬운)
내가 뭘 잘못하고 어떻게 고칠 지에 대한 제안은 크게 감사하겠습니다!
final CharSequence[] items = {"Item 1", "Item 2", "Item 3"};
final boolean[] states = {false, false, false};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("What would you like to do?");
builder.setMultiChoiceItems(items, states, new DialogInterface.OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialogInterface, int item, boolean state) {
}
});
builder.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
SparseBooleanArray CheCked = ((AlertDialog)dialog).getListView().getCheckedItemPositions();
if(CheCked.get(CheCked.keyAt(0)) == true){
Toast.makeText(Backup.this, "Item 1", Toast.LENGTH_SHORT).show();
}
if(CheCked.get(CheCked.keyAt(1)) == true){
Toast.makeText(Backup.this, "Item 2", Toast.LENGTH_SHORT).show();
}
if(CheCked.get(CheCked.keyAt(2)) == true){
Toast.makeText(Backup.this, "Item 3", Toast.LENGTH_SHORT).show();
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create().show();
}
두 분 모두의 완벽한 감사 덕분에 잘 작동합니다. – GFlam
@rekaszenu이 솔루션이 더 좋다고 생각합니다. 특히 큰 목록의 경우. 루프에는 더 많은 리소스가 필요합니다. – evilone
API를 사용하는 것이 항상 (거의) 항상 더 나은 방법이지만, 대부분의 경우 문서를 읽는 것만으로 지루합니다. :) 이것은'CheCked' 멤버를'ListView'의 항목들과 체크 된 상태의 전체'Map'으로 처리하게됩니다. – rekaszeru