2017-11-26 33 views
0

리사이클 러뷰와 플로팅 액션 버튼이 포함 된 프래그먼트가 있습니다. recyclerview에서 각 행은 기본적으로 비활성화 됨으로 설정된 라디오 버튼을 포함합니다. 내 요구 사항은 떠 다니는 액션 버튼 클릭 이벤트에서 모든 행에 이러한 라디오 버튼을 활성화해야합니다. 어떤 해결책이 있습니까? 사전에리사이클 뷰 항목 활성화 또는 비활성화

감사합니다 ..

OK ... 나는 해결책을 얻었다.

여기 내 코드입니다.

fab.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

        for (int i = 0; i <= adapter.getItemCount(); i++) { 

         View childVIew = recyclerView.getChildAt(i); 

         if (childVIew != null) { 
          RadioButton radioYes = childVIew.findViewById(R.id.radio_yes_my_health_info); 
          radioYes.setEnabled(true); 

          RadioButton radioNo = childVIew.findViewById(R.id.radio_no_my_health_info); 
          radioNo.setEnabled(true); 
         } 
        } 

        fab.setImageResource(R.drawable.ic_save_white_24dp); 
        recyclerView.getRecycledViewPool().setMaxRecycledViews(0, 0); 
       } 
      }); 

지금 FAB 버튼을 클릭에, 내 recyclerview 내부의 모든 라디오 버튼이 활성화됩니다 나는 모든 라디오 버튼의 상태를 변경하기 위해 클릭 할 수 있습니다. 하지만 여기서 나는 문제가있다. FAB 버튼을 클릭하면, recyclerview 내의 모든 라디오 버튼이 활성화되지만, recyclerview를 스크롤하면 모든 라디오 버튼이 비활성화되거나 다시 비활성화됩니다. 제게 이것에 대한 해결책을주십시오.

답변

0

당신은

boolean isActivated = false; 

public void setActivated(boolean activated) { 
    isActivated = activated; 
} 

같이하고 onBindViewHolder에 어댑터에 플래그를 가질 수있다() 메소드 플래그를 확인하고 그에 따라 플래그의 상태를 설정할 수 있습니다.

당신의 FAB의 OnClickListener를에서

,이 일을해야

adapter.setActivated(true);//true or false as per your requirement 
adapter.notifyDataSetChanged(); 

호출합니다.

0

당신과 같이, 버튼을 클릭 할 때마다보기를 통해 루핑 시도 할 수 있습니다 :

for (int i = 0; i < adapter.getItemCount(); i++) { 
    View view = recycler.getLayoutManager().findViewByPosition(i); 
    view.setSelected(true); //Select item 
    notifyItemChanged(i); //Notify item changed 
} 
+0

모든 행에서 라디오 버튼을 어떻게 만 선택할 수 있습니까? 실제로 리사이클 러에는 모든 행에 하나의 텍스트 상자와 두 개의 라디오 버튼이 있습니다. 모든 행에서이 두 개의 라디오 버튼 만 선택해야합니다. 귀하의 방법에서 우리는 findViewByPosition (i)을 사용하여 뷰를 얻고 있습니다. 이것은 텍스트 상자와 두 개의 라디오 버튼을 포함한 모든 뷰를 반환 할 수 있습니다. 두 개의 라디오 버튼 만 있으면이 버튼을 활성화해야합니다. 기본적으로이 버튼은 비활성화되어 있습니다. –

+0

view.findViewById (R.id.radio_button)를 사용하여 선택할 라디오 버튼을 가져올 수 있습니다. –

+0

내 어댑터에 20 개의 항목이 있습니다. 그러나 for 루프에서는 7 개의 항목 만 표시합니다. 7 후 null 포인터 예외가 나타납니다. 어떤 생각? –