RecyclerView에서 일부 버튼을 추가했습니다. 버튼의 크기는 목록의 크기에 따라 동적으로 추가됩니다. 지금 버튼이 목록에 기반하여 성공적으로 추가되었습니다. 도움이 필요한 곳은 버튼을 클릭 할 때 버튼이 강조 표시되어야합니다. 그리고 다른 버튼을 클릭하면 이전에 클릭 한 버튼이 기본 색상으로 돌아가고 새롭게 클릭 된 버튼이 강조 표시됩니다.각 행의 버튼이 포함 된 리사이클 러 뷰에서 버튼의 색상을 변경했습니다.
미리 감사드립니다.
RecyclerView에서 일부 버튼을 추가했습니다. 버튼의 크기는 목록의 크기에 따라 동적으로 추가됩니다. 지금 버튼이 목록에 기반하여 성공적으로 추가되었습니다. 도움이 필요한 곳은 버튼을 클릭 할 때 버튼이 강조 표시되어야합니다. 그리고 다른 버튼을 클릭하면 이전에 클릭 한 버튼이 기본 색상으로 돌아가고 새롭게 클릭 된 버튼이 강조 표시됩니다.각 행의 버튼이 포함 된 리사이클 러 뷰에서 버튼의 색상을 변경했습니다.
미리 감사드립니다.
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(..);
}
}
그게 나를 위해 일하지 않고 .. 마지막으로 생성 된 버튼은 강조 표시되어 있지만 그 버튼을 클릭하지는 않습니다. –
코드를 여기에 추가하십시오. – khetanrajesh
if (mSelecteditem == position) { holder.header_text.setBackgroundResource (R.color.cb_orange); } else { holder.header_text.setBackgroundResource (R.color.cb_blue); } –
는 단지
@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;
나는 코드를 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;
Pls는 몇 가지 코드를 붙여 넣습니다 그래서 우리는 u는 지금까지 – rafsanahmad007
이 참조 시도 이해할 수 previousSeletedButton를 사용하면 이전에 선택한 버튼마다 액세스 할 수 있습니다 : http://stackoverflow.com/a/30046476/5425930 –
코드는 내 사무실 PC에 있으므로 지금 붙여 넣을 수 없습니다. –