0

RecyclerView에서 일부 버튼을 추가했습니다. 버튼의 크기는 목록의 크기에 따라 동적으로 추가됩니다. 지금 버튼이 목록에 기반하여 성공적으로 추가되었습니다. 도움이 필요한 곳은 버튼을 클릭 할 때 버튼이 강조 표시되어야합니다. 그리고 다른 버튼을 클릭하면 이전에 클릭 한 버튼이 기본 색상으로 돌아가고 새롭게 클릭 된 버튼이 강조 표시됩니다.각 행의 버튼이 포함 된 리사이클 러 뷰에서 버튼의 색상을 변경했습니다.

미리 감사드립니다.

+0

Pls는 몇 가지 코드를 붙여 넣습니다 그래서 우리는 u는 지금까지 – rafsanahmad007

+1

이 참조 시도 이해할 수 previousSeletedButton를 사용하면 이전에 선택한 버튼마다 액세스 할 수 있습니다 : http://stackoverflow.com/a/30046476/5425930 –

+0

코드는 내 사무실 PC에 있으므로 지금 붙여 넣을 수 없습니다. –

답변

0

RecyclerView 변수 추가에 대한 귀하의 adapater에서을 listitem

의 위치에 버튼의 단추 세트 ID를 추가 : ClickOfButton에

private int selectedItem = -1; 

이 onBindViewHolder에서 다음 버튼을 위치로의 selectedItem을 설정 수다 좋은 :

: 어댑터에서
@Override 
public void onBindViewHolder(VH viewHolder, int i) { 
    // Set selected state; use a state list drawable to style the view 
    if(selectedItem == i) 
     viewHolder.itemView.findViewById(i).setBackground(..); 
    }else{ 
    viewHolder.itemView.findViewById(i).setBackground(..); 
    } 
} 
+0

그게 나를 위해 일하지 않고 .. 마지막으로 생성 된 버튼은 강조 표시되어 있지만 그 버튼을 클릭하지는 않습니다. –

+0

코드를 여기에 추가하십시오. – khetanrajesh

+0

if (mSelecteditem == position) { holder.header_text.setBackgroundResource (R.color.cb_orange); } else { holder.header_text.setBackgroundResource (R.color.cb_blue); } –

0

는 변수를 추가

는 단지

@Override 
     public void onBindViewHolder(VH viewHolder, int currentlySelectedButton) { 

     viewHolder.itemView.findViewById(currentlySelectedButton).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     if(previousSeletedButtonId == currentlySelectedButton){ 
       viewHolder.itemView.findViewById(previousSeletedButtonId).setBackgroundColor(ContextCompat.getColor(context,R.color.orange)); 
     } 
     else{ 
      viewHolder.itemView.findViewById(previousSeletedButtonId).setBackgroundColor(grey); 
      viewHolder.itemView.findViewById(currentlySelectedButton).setBackgroundColor(orange); 
      } 
     } 
     }); 
    } 

월이 도움말을 클릭 버튼에 onBindViewHolder 내부 확인. 다른 부분을 클릭하면 버튼의 ID를 저장하는 것을 잊지 마십시오.

currentlySelectedButton = previousSeletedButtonId; 
0

나는 코드를 OnClick 내부의 ViewHolder에 넣기로 선택했지만 모든 곳에서 작동해야합니다.

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    public Button aButton; 
    public static Button previousSeletedButton = null; 
    private Context context; 

.....

// Handles the row being clicked 
@Override 
public void onClick(View view) { 

     if ((previousSeletedButton == null) || (previousSeletedButton == this.aButton)) { 
      this.aButton.setBackgroundColor(ContextCompat.getColor(context, R.color.orange)); 
     } 
     else{ 
      previousSeletedButton.setBackgroundColor(ContextCompat.getColor(context, R.color.grey)); 
      this.aButton.setBackgroundColor(ContextCompat.getColor(context, R.color.orange)); 
     } 
     previousSeletedButton = this.aButton; 
관련 문제