2017-09-14 29 views
0

另一个项目点击时取消图像查看我RecyclerView一个文本视图和一个定制的CheckBoxView类,这是可以点击的,具有焦点以及它在适配器实例化。所有的逻辑都在这个类中。如何在适配器

现在,当单行具有焦点,复选框为黄色,点击时是灰色的。问题消失,当我点击,因为它被保存到灰不走空的图像前一次单击项目另一个项目,但仍维持在以前的状态。

点击另一个复选框时应该走空。

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; 

删除全部灰色!