リサイクルビューにボタンを追加しました。リストのサイズに基づいてボタンが動的に追加されました。今すぐボタンがリストに基づいて正常に追加されました。ここではヘルプが必要です。ボタンをクリックすると、ボタンが強調表示されます。そして別のボタンをクリックすると、以前にクリックされたボタンがデフォルトの色に戻って、新たにクリックされたボタンが強調表示されます。各行のボタンを含むリサイクラビューのボタンの色を変更しました
ありがとうございました。
リサイクルビューにボタンを追加しました。リストのサイズに基づいてボタンが動的に追加されました。今すぐボタンがリストに基づいて正常に追加されました。ここではヘルプが必要です。ボタンをクリックすると、ボタンが強調表示されます。そして別のボタンをクリックすると、以前にクリックされたボタンがデフォルトの色に戻って、新たにクリックされたボタンが強調表示されます。各行のボタンを含むリサイクラビューのボタンの色を変更しました
ありがとうございました。
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(..);
}
}
それは私のために働いていない..最後に生成されたボタンのみ強調表示されますが、私はそのボタンをクリックしていません。 –
ここにコードを追加してください。 – khetanrajesh
if(mSelecteditem == position){ holder.header_text.setBackgroundResource(R.color.cb_orange); } else { holder.header_text.setBackgroundResource(R.color.cb_blue); } –
変数を追加します。
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;
コードを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にあるので、今すぐ貼り付けることができません。 –