2017-09-14 9 views
0

RecyclerView 하나의 텍스트보기와 하나의 맞춤식 어댑터가 인스턴스화 된 CheckBoxView 클래스를 클릭 할 수 있고 포커스도 가지고 있습니다. 모든 논리는이 수업에 있습니다.어댑터의 다른 항목을 클릭하면 이미지보기 선택 해제하는 방법

이제 단일 행에 테두리가 있으면 확인란이 노란색이고 클릭하면 회색입니다. 회색으로 저장된 이전에 클릭 한 항목이 빈 이미지로 이동하지 않고 이전 상태로 남아 있기 때문에 다른 항목을 클릭하면 문제가 발생합니다.

다른 CheckBox를 클릭하면 비어 있어야합니다.

This is when there is one clicked item - Gray, and one Focused item - Yellow

Now when clicked on German item, the Russian should go empty, not gray colored

public class MyCheckBoxView { 

public enum CheckType { 
    ACTIVE, // YELLOW When check box has focus on 
    SELECTED, // GRAY When user selects view 
    EMPTY // // EMPTY When not selected 

} 

private CheckType checkType; 
private ImageView view; 
private boolean isChecked = false; 

/** 
* Constructor 
*/ 
public MyCheckBoxView() { 
    setup(); 
} 

//Setup method: Fill In View 
private void setup() { 
    // Create view 
    view = new ImageView(BeelineApplication.get()); 
    view.setFocusable(true); 
    view.setClickable(true); 

    setCheckType(CheckType.EMPTY); 
    view.setImageResource(R.drawable.beeline_check_box_empty); 

    // Set CheckBox focus behaviours 
    view.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 
       checkType = CheckType.ACTIVE; 
       view.setImageResource(R.drawable.beeline_check_box_active); 
      } else { 
       // NO FOCUS 
       view.setImageResource(R.drawable.beeline_check_box_empty); 

       // If checkbox view is checked 
       if (isChecked) { 
        view.setImageResource(R.drawable.beeline_check_box_selected); 
        checkType = CheckType.SELECTED; 
       } else { 
        if (checkType == CheckType.SELECTED) { 
         view.setImageResource(R.drawable.beeline_check_box_selected); 
         isChecked = true; 
        } else { 
         view.setImageResource(R.drawable.beeline_check_box_empty); 
         isChecked = false; 
        } 
       } 
      } 

     } 
    }); 

    // Set CheckBox state on click event 
    view.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!isChecked) { 
       view.setImageResource(R.drawable.beeline_check_box_selected); 
       checkType = CheckType.SELECTED; 
      } else { 

      } 
     } 
    }); 
} 

// GET VIEW - Called in Adapter 
public View getView() { 
    return view; 
} 

//Set Check Type 
public void setCheckType(CheckType checkType) { 
    this.checkType = checkType; 
} 

} 몇 가지 체크 박스는 모든 체크 박스에서 제거 회색을 확인하고 다음을 클릭 확인란
을에 회색 적용하면

답변

0

당신이
같은 것을해야 클릭하여 체크 한 체크 박스의 ID를 확인하고 회색으로 설정할 수 있습니다. setOnClickListener! 모든 회색을 제거한 후에

view.setImageResource(R.drawable.beeline_check_box_selected); 
      checkType = CheckType.SELECTED; 

을 추가해야합니다
!