2017-09-14 27 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; 

刪除全部灰色!