0

リサイクルビューにボタンを追加しました。リストのサイズに基づいてボタンが動的に追加されました。今すぐボタンがリストに基づいて正常に追加されました。ここではヘルプが必要です。ボタンをクリックすると、ボタンが強調表示されます。そして別のボタンをクリックすると、以前にクリックされたボタンがデフォルトの色に戻って、新たにクリックされたボタンが強調表示されます。各行のボタンを含むリサイクラビューのボタンの色を変更しました

ありがとうございました。

+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で、ボタンの位置.ANDへの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

変数を追加します。

private int previousSeletedButtonId = 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; 
関連する問題