2017-01-05 5 views
0

휴식 서비스의 수신 목록과 함께 일부 체크 박스를 확인하고 싶습니다.Android Check Checkbox from RecyclerView

여기 몇 가지 코드가 있습니다.

요청 확인이 있습니다

private void requestOpcionais() { 
    OpcionalRequestHelper.opcionaisRequest(Request.Method.GET, EndpointURL.GET_OPCIONAIS, null, new Response.Listener<Opcional[]>() { 
     @Override 
     public void onResponse(Opcional[] response) { 
      ArrayList<Opcional> opcionalArrayList = new ArrayList<>(); 

      opcionalArrayList.addAll(Arrays.asList(response)); 

      mRecyclerView.setHasFixedSize(true); 
      mLayoutManager = new LinearLayoutManager(getActivity()); 
      mRecyclerView.setLayoutManager(mLayoutManager); 
      listOpcionalAdapter = new ListOpcionalAdapter(getActivity(), opcionalArrayList, VeiculoFragment.this); 
      mRecyclerView.setAdapter(listOpcionalAdapter); 

      if (veiculo != null) { 
       setOpcionalVeiculoSelected(opcionalArrayList, veiculo.getOpcionais()); 
      } 
      progressDialogOpcionais.dismiss(); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      progressDialogOpcionais.dismiss(); 
      Toast.makeText(getActivity(), "Erro ao carregar opcionais.", Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

... 내 opcional 게시하면 난 내 recyclerview에 그 "opcionais"를 확인하는 방법

private void setOpcionalVeiculoSelected(ArrayList<Opcional> opcionalArrayList, List<Opcional> opcionais) { 
    for (Opcional opcionalList : opcionalArrayList) { 
     for (Opcional opcionalVeiculo : opcionais) { 
      if (opcionalVeiculo.getId() == opcionalList.getId()) { 
       mOpcionalChecked.add(opcionalVeiculo); 
      } 
     } 
    } 
} 

?

답변

0

이 방법으로 내 문제를 해결했습니다 ...

배열을 어댑터에 보냈습니다.

if (veiculo != null) { 
       setOpcionalVeiculoSelected(opcionalArrayList, veiculo.getOpcionais()); 
       listOpcionalAdapter = new ListOpcionalAdapter(getActivity(), opcionalArrayList, VeiculoFragment.this, veiculo.getOpcionais()); 
      } else { 
       listOpcionalAdapter = new ListOpcionalAdapter(getActivity(), opcionalArrayList, VeiculoFragment.this, null); 
      } 

내 onBindViewHolder()에서 배열이 null이 아닌지 확인했습니다.

onBindViewHolder()  
if (opcionalsVeiculo != null) { 
    setOpcionalVeiculoSelected(holder, position); 
} 

마지막으로 내 배열과 다른 배열의 위치를 ​​어댑터에서 확인하십시오.

private void setOpcionalVeiculoSelected(ViewHolder holder, int position) { 
    for (Opcional opcional : opcionalsVeiculo) { 
     if (opcionals.get(position).getId() == opcional.getId()) { 
      holder.chb_opcional.setChecked(true); 
     } 
    } 
}