私はいくつかのカードビューを表示するrecyclerviewを持っています。各カードビューには、テキスト、イメージボタンなどの要素がいくつかあります。 Adapterクラス(RvAdapterはRecyclerView.Adapterを継承しています)内には、以下のコードがあります。私がしたいのは、同じボタンのOnClickListenerを使用してimagebuttonに割り当てられたVector(.xml)の色を変更することです。RecyclerViewでImageButtonに割り当てられたベクトルの色を変更するにはどうすればいいですか?
public RvAdapter(Context context,List<Person> persons) {
this.mContext=context;
this.persons=persons;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_content,parent,false);
ViewHolder vh=new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final ViewHolder mHolder=holder;
mHolder.personName.setText(persons.get(position).name);
mHolder.personAge.setText((persons.get(position).age));
mHolder.cvCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext,"card number:"+String.valueOf(position),Toast.LENGTH_SHORT).show();
}
});
//this is where the error comes
mHolder.alarmImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//this code line doesnt work
//mHolder.alarmImageButton.setColorFilter(R.color.colorAccent);
//this code line works... but it changes the imagebutton color of another card view at below of the recycler view
mHolder.alarmImageButton.setColorFilter(Color.argb(255,255,255,255));
Toast.makeText(mContext,"button:"+String.valueOf(position),Toast.LENGTH_SHORT).show();
}
});
}
RecyclerViewは、内部8 cardviewsを持っています。最初のカードビューのイメージボタンのイメージボタンがクリックされると、色が白に変わります。しかし、エラーは、それも7番目のカードのイメージボタンの色の色を変更することです。 2枚目のカードビューの画像ボタンをクリックすると、8枚目のカードの画像ボタンの色も変わります。しかし、トーストはうまく動作します。 clickイベントが各cardviewとimagebuttonの位置を適切に識別していることを示しています。
私はこれを正しく理解できませんでした。 1枚目のカードの7枚目のカードビューはどうつながっていますか?
これは、私はちょうどこれを適切に把握することができませんでし
この回答を確認する時間をください。 –