0

AlertDialogいくつかのカスタム行を表示する必要があります。これらの行の右側にはラジオボタンがあり、選択モードはシングルモードである必要があります(したがって、ラジオボタン)。

私が持っているもの:

ArrayList<HashMap<String, String>> it = new ArrayList<HashMap<String,String>>();
HashMap<String, String> map;

map = new HashMap<String, String>();
map.put("asd", "test1");
it.add(map);
map = new HashMap<String, String>();
map.put("asd", "test2");
it.add(map);
map = new HashMap<String, String>();
map.put("asd", "test3");
it.add(map);

SimpleAdapter sa = new SimpleAdapter(context, it, R.layout.dialog_row, new String[] { "asd" }, new int[] { android.R.id.text1 });

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setSingleChoiceItems(sa, -1, null);
// here are added positive and negative buttons
builder.show();

のxml dialog_row

<?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:orientation="horizontal" >

<ImageView
    android:id="@+id/rowIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/rh_3" />

<CheckedTextView
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="?listPreferredItemHeightSmall"
    android:checkMark="?android:attr/listChoiceIndicatorSingle"
    android:gravity="center_vertical"
    android:paddingLeft="?listPreferredItemPaddingLeft"
    android:paddingRight="?listPreferredItemPaddingRight"
    android:textAppearance="?textAppearanceListItemSmall" />

</LinearLayout>

期待どおりにAlertDialog表示されますが、アイテムをクリックすると、ラジオボタンがオフのままになります。どうしてこれなの?

4

1 に答える 1

1

ここで実用的なソリューションを見つけました: https://stackoverflow.com/a/3281239/554002

基本的に、カスタムを作成し、上記の要素の代わりにレイアウト xml の唯一の要素としてa をArrayAdapter使用する必要がありました。CheckedTextView

于 2013-03-22T09:51:43.960 に答える