0

ここでは、単一選択モードのリストビューを含むカスタム ダイアログを作成しました。ユーザーがリストビューでアイテムの1つを選択すると、次にダイアログが開かれたときに選択され、ユーザーは別のアイテムも選択できる必要があります。しかし、私の問題は、ダイアログを再度開いたときにダイアログのラジオボタンがオフになっていることです。http://blog.thisisfeifan.com/2011/10/2-lines-text-in-single-choice-listview.htmlを参照しました

では、私のコードの何が問題なのですか?

私のカスタム ダイアログ xml ファイル:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/relativeLayout1"
      android:layout_width="250dp"
      android:layout_height="50dp"    
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:background="@drawable/list_selector">

     <LinearLayout android:layout_centerVertical="true"
         android:layout_width="250dp"
         android:layout_height="50dp"
         android:layout_alignParentLeft="true"
         android:orientation="vertical" android:gravity="center_vertical">

     <TextView android:layout_width="wrap_content"
         android:layout_height="wrap_content" android:id="@+id/tv_MainText"
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:paddingLeft="12dp" />
     </LinearLayout>

     <RadioButton android:layout_height="wrap_content"
         android:id="@+id/rb_Choice" android:layout_width="wrap_content"  android:layout_centerVertical="true"
         android:layout_alignParentRight="true" android:gravity="center_vertical"
         android:focusable="false"  android:clickable="false"
         android:focusableInTouchMode="false"
         android:paddingRight="12dp">
      </RadioButton>

</RelativeLayout>

カスタム ダイアログ リストビュー ファイル:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="250dp"
   android:layout_height="210dp">

   <LinearLayout 
         android:id="@+id/layout_btn"
         android:layout_width="fill_parent"
         android:layout_height="3dp"
         android:gravity="center">          
        <ImageView
            android:src="@drawable/separator"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/dialoglist"
        />        
  </LinearLayout>
  <ListView
        android:id="@+id/dialoglist"
        android:layout_width="250dp"
        android:layout_height="215dp"
        android:divider="#242424"
        android:dividerHeight="2dp"
        android:listSelector="@drawable/list_selector" 
        android:paddingTop="5dp"
        />
  </RelativeLayout>

私の主な活動では、私はリストビューを持っており、リスト項目をクリックすると、カスタムダイアログが開きました:

lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                if(position == 1)
                {
                    final Dialog dialog = new Dialog(context,R.style.CustomDialogTheme);
                    dialog.setContentView(R.layout.dialog_layout);


                    dialog.setTitle("Select Font Size");

                    final String[] sizeType = new String[] {"Normal" , "Medium" , "Large" , "Extra Large"};
                    final ArrayList<HashMap<String, Object>> m_data = new ArrayList<HashMap<String, Object>>();
                    final ArrayList<HashMap<String, Object>> m_data_new = new ArrayList<HashMap<String, Object>>();

                    final HashMap<String, Object> data_new = new HashMap<String, Object>();
                    for(int i = 0; i < sizeType.length;i++)
                    {
                        HashMap<String, Object> data = new HashMap<String, Object>();
                        data.put("item1",sizeType[i]);

                        m_data.add(data);

                    }

                        for (HashMap<String, Object> m :m_data) //make data of this view should not be null (hide )

                        {
                                m.put("checked", false);

                        }

                    final ListView lst = (ListView) dialog.findViewById(R.id.dialoglist);
                    //lst.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

                     final SimpleAdapter adapter = new SimpleAdapter(context, m_data, R.layout.dialoglist_item,new String[] {"item1","checked"},new int[] {R.id.tv_MainText,R.id.rb_Choice}); 
                     lst.setAdapter(adapter);

                     lst.setOnItemClickListener(new OnItemClickListener() {
                        public void onItemClick(AdapterView<?> arg0, View arg1,
                                int item, long arg3) {
                            RadioButton rb = (RadioButton) dialog.findViewById(R.id.rb_Choice);
                            if (!rb.isChecked()) //OFF->ON
                            {                       
                                for (HashMap<String, Object> m :m_data) //clean previous selected
                                    m.put("checked", false);

                                m_data.get(item).put("checked", true);              
                                adapter.notifyDataSetChanged();


                            }       

                            selectedSize = sizeType[item];
                            //dialog.dismiss();

                        }

                    });
                    dialog.show();
                }

だから私の問題を解決してください。事前にサンクス。

4

1 に答える 1