Я хочу, чтобы добавить флажок в этом стандартном AlertDialog Wiht одном списке выбораДобавление CheckBox в singlechoice набор AlertDialog
new AlertDialog.Builder(this)
.setSingleChoiceItems(R.array.difficultyLevel_list, 1, new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) { level = which; }
})
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton(android.R.string.cancel, null)
.show();
Прямо сейчас, как это, это показывает, красиво:
я сместился использовать пользовательский макет:
<?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="wrap_content"
android:orientation="vertical" >
<CheckBox
android:id="@+id/levels_keep"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:checked="false"
android:text="@string/levels_keep" />
<ListView
android:id="@+id/levels_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/difficultyLevel_list"
android:choiceMode="singleChoice" />
</LinearLayout>
Используя этот код :
LayoutInflater inflater = getLayoutInflater();
final View customView = inflater.inflate(R.layout.dialog_levels, null);
final ListView list = (ListView) customView.findViewById(R.id.levels_list);
final CheckBox keep = (CheckBox) customView.findViewById(R.id.levels_keep);
// list.setSelected(level);
list.setItemChecked(level, true); // Marks the item as checked
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
level = position;
}
});
new AlertDialog.Builder(this)
.setView(customView)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
CheckBox keep = (CheckBox) findViewById(R.id.levels_keep);
if(keep.isChecked()) {
Context context = PlayersActivity.this;
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = sp.edit();
editor.putString(context.getString(R.string.pref_level_key), String.valueOf(level));
editor.commit();
}
}
})
.setNegativeButton(android.R.string.cancel, null)
.show();
который показывает (список прокручивать):
Есть несколько вещей, которые я не могу понять:
- Почему я не вижу кнопки радио на список?
-
Как установить отмеченный по умолчанию элемент?(Отредактировано код с помощью решения) -
Как я могу прослушать изменения в выборе?(Отредактировано код, так как я нашел, как это сделать) - Как добавить отступы между квадратом флажка и текстом флажка. Я пробовал Android: paddingLeft, но это делает его хуже, перекрывая текст и квадрат. Я пробовал андроид: drawablePadding без эффекта.
- Почему тема изменилась? (Не очень важно, просто интересно) Edit Это кажется, что цвета темы все перепутались, когда я нажимаю на элемент его цвет текста становится черным и «исчезнуть» в фоновом режиме в строке и
Пожалуйста, не префикс названия вопроса с * Android *, так как он просто добавляет шум, ярлык внизу является более чем достаточно. – Luksprog