>
viewHolder.optiontxt1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

    viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0);
                    Log.e("position", "onClick: " + i);
                }
            });

이것은 내가하려는 일입니다. 실제로, recyclerView에서 스크린에 표시 할 데이터를 보여주는 6 개의 배열이 있습니다. 첫 번째 배열은 질문 번호이며 다른 배열은 4 개의 옵션입니다. 하지만 문제는 첫 번째 질문 중 하나를 선택하면 8 개의 질문 중 하나가 자동으로 선택됩니다.


  • 답변 # 1

    와이즈 비즈   recyclerview 에서보기를 재활용 그래서 OnBindViewHolder 때  클릭하면 다른 items 에 반영됩니다. .

    positions 의 선택 상태에 대한 더 나은 이해를 위해  이 예를 참조하십시오

    도움이 되길 바랍니다.

  • 답변 # 2

    Recyclerview는 항목보기를 재활용합니다. 귀하의 경우 recyclerview는 8 번째 질문의 첫 번째 질문보기를 재사용하고 있습니다. 질문이 될 수 있습니다. onBindViewHolder의 업데이트 된 컨텐츠로 각 itemview를 업데이트해야합니다. 당신이 할 수있는 일은 답변을 위해 배열을 유지하는 것입니다. 사용자가 옵션을 클릭하면 응답 배열을 업데이트하고 해당 위치에 대해 알림을 변경했습니다. onBindViewHolder에서 응답 배열을 확인하여 옵션을 선택/선택 취소하십시오. 다음은 코드 스 니펫입니다.

    recyclerview
    
    
    int[] answers = new int[getItemCount()]; @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { /* check/uncheck options by checking the answer array */ if(answers[position] == 1) viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); if(answers[position] == 2) viewHolder.optiontxt2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); if(answers[position] == 3) viewHolder.optiontxt3.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt3.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); if(answers[position] == 4) viewHolder.optiontxt4.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt4.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); viewHolder.optiontxt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { answers[position] = 1; notifyItemChanged(position); } });

  • 이전 NET 표준 및 NET Core
  • 다음 reactjs - React Table 페이지 매김 상단에 사용자 정의 요소 추가