0

Recyclerview screenshot充分利用RadioGroup中以前的单选按钮值RecyclerView

在上述值内当我检查选项“盐”它让我从上面的项目相同位置的值。所以在这种情况下,它给了我“CH6”

像这样当我检查“水”它给我“CH4”。

因此,这里是我的RecyclerView,提前

public class QuestionsAdapter extends 

    RecyclerView.Adapter<QuestionsAdapter.ViewHolder> { 

      List<String> names = new ArrayList<>(); 
      Context c; 
      String username; 
      Map<String,Object> map = new HashMap<>(); 
      ArrayList<QuestionData> questions = new ArrayList<>(); 



      public QuestionsAdapter(Context c) { 
       this.c = c; 
      } 

      public void updateQuestion(ArrayList<QuestionData> data){ 
       this.questions = data; 
       notifyDataSetChanged(); 
      } 
      public class ViewHolder extends RecyclerView.ViewHolder { 
       TextView q; 
       RadioButton r1; 
       RadioButton r2; 
       RadioButton r3; 
       RadioButton r4; 
       RadioGroup rg; 

       public ViewHolder(View itemView) { 
        super (itemView); 
        rg = (RadioGroup)itemView.findViewById(R.id.RGroup); 
        q = (TextView)itemView.findViewById(R.id.question); 
        r1 = (RadioButton)itemView.findViewById(R.id.no1); 
        r2 = (RadioButton)itemView.findViewById(R.id.no2); 
        r3 = (RadioButton)itemView.findViewById(R.id.no3); 
        r4 = (RadioButton)itemView.findViewById(R.id.no4); 


       } 
      } 


      @Override 
      public QuestionsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
       View v = LayoutInflater.from (parent.getContext()).inflate (R.layout.qnalayout, parent, false); 
       return new ViewHolder(v); 



      } 

      @Override 
      public void onBindViewHolder(final ViewHolder holder, int position) { 
       final QuestionData qholder = questions.get(position); 

       String question= qholder.getQuestion(); 
       final String qid = qholder.getId(); 

       final ArrayList<String> options = new ArrayList<>(); 
       options.add(qholder.getO1()); 
       options.add(qholder.getO2()); 
       options.add(qholder.getO3()); 
       options.add(qholder.getO4()); 
       Collections.shuffle(options); 
       final String o1 = options.get(0); 
       String o2 = options.get(1); 
       String o3 = options.get(2); 
       String o4 = options.get(3); 
       final String[] answer = new String[1]; 
       holder.q.setText(question); 
       holder.r1.setText(o1); 
       holder.r2.setText(o2); 
       holder.r3.setText(o3); 
       holder.r4.setText(o4); 
       holder.rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
        @Override 
        public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { 
         switch (checkedId){ 
          case R.id.no1: 
           Toast.makeText(c, holder.r1.getText().toString(), Toast.LENGTH_SHORT).show(); 
           break; 
          case R.id.no2: 
           Toast.makeText(c, holder.r2.getText().toString(), Toast.LENGTH_SHORT).show(); 

           break; 
          case R.id.no3: 
           Toast.makeText(c, holder.r3.getText().toString(), Toast.LENGTH_SHORT).show(); 

           break; 
          case R.id.no4: 
           Toast.makeText(c, holder.r4.getText().toString(), Toast.LENGTH_SHORT).show(); 

           break; 
         } 
         RadioButton checked = (RadioButton)findViewById(checkedId); 
         answer[0] = checked.getText().toString(); 
         Toast.makeText(c, checked.getText().toString(), Toast.LENGTH_SHORT).show(); 
         map.put(qid,answer[0]); 
         System.out.println(map); 
        } 
       }); 

      } 


      @Override 
      public int getItemCount() { 
       if (questions!=null){ 
        return questions.size(); 

       }else { 
        return 0; 
       } 
      } 

     } 

谢谢!

+0

是什么的问题是什么呢?你能澄清一下吗? –

+0

那么,当我检查recyclerview中第二个itemview的单选按钮时,它显示的是与第一个itemview @ChrisGong – Kim

+0

相同位置的单选按钮文本,所以您希望它做什么呢? –

回答

0

相反的:

RadioButton checked = (RadioButton)findViewById(checkedId); 

执行:

RadioButton checked = (RadioButton) group.findViewById(checkedId); 
相关问题