首先忽略一些不是英文的文本。好吧,我试图在按下时更改mi卡的颜色。结果是卡改变了颜色,问题是其他一些卡也改变了颜色。
我正在使用一个备用布尔数组 -> 选择
这是我的适配器:
private class DotesAdapter extends RecyclerView.Adapter<DotesAdapter.DoteViewHolder> implements Filterable {
private ListaDotes mValues;
private DotesAdapter.DoteFilter mFilter;
public DotesAdapter(ListaDotes items){
mValues=items;
mFilter= new DotesAdapter.DoteFilter(DotesAdapter.this);
}
@Override
public DotesAdapter.DoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false);
return new DotesAdapter.DoteViewHolder(v);
}
@Override
public void onBindViewHolder(DotesAdapter.DoteViewHolder holder, int position) {
holder.Titulo.setText(mValues.get(position).getTitulo());
String s;
int t = mValues.get(position).getTipo();
if(t==0)
s= "GENERALES";
else
if(t==1)s= "FORTALEZA";
else
if(t==2)s= "REFLEJOS";
else
if(t==3)s= "VOLUNTAD";
else
if(t==4)s= "PRECISIÓN";
else
if(t==5)s= "ATAQUE";
else
s= "SOBRENATURALES";
holder.Tipo.setText(s);
if(selections.get(position,false))
holder.myBackground.setCardBackgroundColor(Color.RED);
}
@Override
public int getItemCount() {
return mValues.size();
}
@Override
public Filter getFilter() {
// if(doteFilter == null)
// doteFilter = new DoteFilter(this, listaDotes);
return mFilter;
}
这是我的 ViewHolder:
public class DoteViewHolder extends RecyclerView.ViewHolder {
TextView Titulo;
TextView Tipo;
CardView myBackground;
DotesAdapter adapter;
public DoteViewHolder(final View itemView) {
super(itemView);
Titulo=(TextView) itemView.findViewById(R.id.titulo);
Tipo=(TextView) itemView.findViewById(R.id.tipo);
myBackground =(CardView) itemView.findViewById(R.id.card);
itemView.setLongClickable(true);
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Intent intent = new Intent(CrearPersonajeDotes.this,DoteView.class);
//Bundle b = new Bundle();
//b=filteredList.get(getAdapterPosition()).toString();
YoYo.with(Techniques.Flash).duration(200).playOn(v);
intent.putExtra("Dote", getAdapterPosition());
intent.putExtra("Call",1);
startActivity(intent);
return true;
}
});
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//HERE I CHANGE THE COLOR OF THE CARD TO RED IF THE POSITION OF THE ARRAYS IS ON TRUE OR BLUE IN THE OTHER CASE
if(!selections.get(getAdapterPosition(),false)) {
myBackground.setCardBackgroundColor(Color.RED);
selections.put(getAdapterPosition(),true);
Dote d = listaDotes.get(getAdapterPosition());
MainCrearPersonaje.NPersonaje.addDote(d);
UpdatePDText();
}
else{
myBackground.setCardBackgroundColor(Color.BLUE);
selections.put(getAdapterPosition(),false);
Dote d = listaDotes.get(getAdapterPosition());
MainCrearPersonaje.NPersonaje.removeDote(d);
UpdatePDText();
;
}
}
});
}
}