2017-03-04 17 views
0

私はアンドロイドデバイスにクイズアプリを作成しています。各質問にはラジオ・グループとラジオ・ボタンによる少なくとも4つの回答オプションがあります。ラジオグループ内のラジオボタンを選択すると、異なるラジオグループのラジオボタンが選択されます

クイズのアクティビティであるクイズのページでは、私はリストビューを使用しました。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/content_question_list" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="ir.testravanshenasi.segalclinic.test.QuestionListActivity" 
tools:showIn="@layout/activity_question_list"> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true"> 

    <TextView 
     android:text="test questions" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView13" 
     android:layout_marginBottom="10dp" 
     android:textAlignment="center" 
     android:textSize="18sp" /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="3dp" 
     android:background="@android:color/darker_gray" 
     android:layout_alignParentTop="true" /> 

    <ListView 
     android:layout_width="match_parent" 
     android:id="@+id/activity_question_list_list" 
     android:layout_height="430dp"> 


    </ListView> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="3dp" 
     android:background="@android:color/darker_gray" 
     android:layout_alignParentTop="true" /> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp"> 

     <Button 
      android:text="cancel" 
      android:layout_width="wrap_content" 
      android:id="@+id/activity_question_list_cancel" 
      android:layout_weight="1" 
      android:textSize="18sp" 
      android:layout_height="40dp" 
      android:onClick="onCancelBtnClick" /> 

     <Button 
      android:text="end" 
      android:layout_width="wrap_content" 
      android:layout_height="30dp" 
      android:id="@+id/activity_question_list_complete" 
      android:layout_weight="1" 
      android:textSize="18sp" 
      android:background="@android:color/holo_green_dark" 
      android:onClick="onCompleteBtnClick" /> 
     </LinearLayout> 

    </LinearLayout> 
</RelativeLayout> 

と私は各質問行のレイアウトを作成しました。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="10dp" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingTop="10dp"> 

    <TextView 
    android:text="TextView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/question_id" 
    android:visibility="gone" /> 

<TextView 
    android:text="TextView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/question_text" /> 

<RadioGroup 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/question_options"> 

    <RadioButton 
     android:text="RadioButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/question_option_1" 
     android:layout_weight="1" /> 

    <RadioButton 
     android:text="RadioButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/question_option_2" 
     android:layout_weight="1" /> 

    <RadioButton 
     android:text="RadioButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/question_option_3" 
     android:layout_weight="1" /> 

    <RadioButton 
     android:text="RadioButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/question_option_4" 
     android:layout_weight="1" /> 

    <RadioButton 
     android:text="RadioButton" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/question_option_5" 
     android:layout_weight="1" 
     android:visibility="gone" /> 
    </RadioGroup> 

</LinearLayout> 

と私はリストビューにSimpleAdapterとして質問を追加します。

 String[] from = {"qid" , "question" , "op1","op2" , "op3" , "op4"}; 

     int[] to = { R.id.question_id , R.id.question_text , R.id.question_option_1 ,R.id.question_option_2 , R.id.question_option_3 , R.id.question_option_4 }; 

     questionsList = parse(jsonArray); 

     SimpleAdapter rlt = new SimpleAdapter(
       getBaseContext() , questionsList , R.layout.question ,from , to); 

     lv.setAdapter(rlt); 

問題は、質問で最初の回答オプションを選択したときなど、他の質問でも最初のオプションが選択されているという問題があります。

私はGenymotionで自分のアプリをテストします。

ありがとうございました。

+0

はあなたが彼らに何を表示するまで、誰もあなたを助けることができないでしょう –

+0

をimplementigているコードを表示やった。 –

答えて

0

私はこの問題を解決し、それは私のソリューションです:

私はSimpelAdapterをentendsクラスを作り、here.I HAVAに質問IDと選びましラジオボタンの数を格納するリストをそれを使用。ラジオボタンが選択されると、リストにその番号が格納され、リストの各サイクルでラジオボタン番号がリストに存在するかどうかがテストされます。私は、ラジオボタンのチェックをチェックするか、ラジオボタンのチェックをクリアするラジオグループ方法を選択します。

public class row_question_list extends SimpleAdapter { 

List<HashMap<String , Object>> questionsList; 

public row_question_list(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) { 
    super(context, data, resource, from, to); 
    questionsList = (List<HashMap<String , Object>>) data; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View v = super.getView(position, convertView, parent); 

    RadioButton op1 = (RadioButton) v.findViewById(R.id.question_option_1); 
    RadioButton op2 = (RadioButton) v.findViewById(R.id.question_option_2); 
    RadioButton op3 = (RadioButton) v.findViewById(R.id.question_option_3); 
    RadioButton op4 = (RadioButton) v.findViewById(R.id.question_option_4); 
    RadioButton op5 = (RadioButton) v.findViewById(R.id.question_option_5); 
    final RadioGroup rg = (RadioGroup) v.findViewById(R.id.question_options); 


    op1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      questionsList.get(position).put("answer","1"); 
      notifyDataSetChanged(); 
     } 
    }); 

    op2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      questionsList.get(position).put("answer","2"); 
      notifyDataSetChanged(); 
     } 
    }); 

    op3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      questionsList.get(position).put("answer","3"); 
      notifyDataSetChanged(); 
     } 
    }); 

    op4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      questionsList.get(position).put("answer","4"); 
      notifyDataSetChanged(); 
     } 
    }); 

    op5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      questionsList.get(position).put("answer","5"); 
      notifyDataSetChanged(); 
     } 
    }); 


    if(questionsList.get(position).get("answer").toString().matches("0")){ 
     rg.clearCheck(); 
     rg.refreshDrawableState(); 

    } else if(questionsList.get(position).get("answer").toString().matches("1")){ 
     rg.check(R.id.question_option_1); 
     rg.refreshDrawableState(); 

    }else if(questionsList.get(position).get("answer").toString().matches("2")){ 
     rg.check(R.id.question_option_2); 
     rg.refreshDrawableState(); 

    }else if(questionsList.get(position).get("answer").toString().matches("3")){ 
     rg.check(R.id.question_option_3); 
     rg.refreshDrawableState(); 

    }else if(questionsList.get(position).get("answer").toString().matches("4")){ 
     rg.check(R.id.question_option_4); 
     rg.refreshDrawableState(); 

    }else if(questionsList.get(position).get("answer").toString().matches("5")){ 
     rg.check(R.id.question_option_5); 
     rg.refreshDrawableState(); 

    } 

    return v; 
} 

}

と私は、リスト項目を作成するには、このクラスを使用:

 String[] from = {"question" , "op1","op2" , "op3" , "op4"}; 

     int[] to = { R.id.question_text , R.id.question_option_1 ,R.id.question_option_2 , R.id.question_option_3 , R.id.question_option_4 }; 

     questionsList = parse(jsonArray); 

     row_question_list rql = new row_question_list(
       getBaseContext() , questionsList , R.layout.question , from , to 
     ); 

     lv.setAdapter(rql); 
関連する問題