在 Viewholder 中更改颜色语句不起作用;只有一个语句可以正常工作
Changing color statements in Viewholder don't work; only one statement works properly
我正在尝试为 recyclerview 监听点击事件并更改文本和编辑文本的颜色制作一个适配器。
当我只添加
text.settextView.setHighlightColor(Color.parseColor("~~"));
它工作正常但是当我使用 if-else
并添加
text.settextView.setHighlightColor(Color.parseColor("~~"));
不行。。。一开始我以为是跳过了某些语句,所以我加了Log.i
查看,我认为没有跳过的语句。
static class ViewHolder extends RecyclerView.ViewHolder{
public MyCustomEditTextListener myCustomEditTextListener2;
TextView textView;
EditText editText;
public ViewHolder(@NonNull View itemView, MyCustomEditTextListener myCustomEditTextListener2) {
super(itemView);
textView=itemView.findViewById(R.id.textView2);
editText=itemView.findViewById(R.id.editText2);
this.myCustomEditTextListener2=myCustomEditTextListener2;
this.editText.addTextChangedListener(myCustomEditTextListener2);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos=getAdapterPosition();
if(swtich==0) { //swtich is defined in adapter class(static int swtich=0;)
Log.i("info", "click event & swith");
textView.setHighlightColor(Color.parseColor("#e1bee7"));
//editText.setHighlightColor(Color.parseColor("#FFF1FF"));
swtich = 1;
}else if(swtich==1){
textView.setHighlightColor(Color.parseColor("#FFFFFF"));
editText.setHighlightColor(Color.parseColor("#000000"));
swtich=0;}
if(pos!=RecyclerView.NO_POSITION){
if(mListener!=null){
mListener.onItemClick(view,pos);
}
}
}
});
}
这样试试。您需要 else 条件(而不是 if-else):
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos=getAdapterPosition();
if(swtich==0) { //swtich is defined in adapter class(static int swtich=0;)
Log.i("info", "click event & swith");
textView.setHighlightColor(Color.parseColor("#e1bee7"));
editText.setHighlightColor(Color.parseColor("#FFF1FF"));
swtich = 1;
}else{
textView.setHighlightColor(Color.parseColor("#FFFFFF"));
editText.setHighlightColor(Color.parseColor("#000000"));
swtich=0;
}
if(pos!=RecyclerView.NO_POSITION){
if(mListener!=null){
mListener.onItemClick(view,pos);
}
}
}
});
我正在尝试为 recyclerview 监听点击事件并更改文本和编辑文本的颜色制作一个适配器。 当我只添加
text.settextView.setHighlightColor(Color.parseColor("~~"));
它工作正常但是当我使用 if-else
并添加
text.settextView.setHighlightColor(Color.parseColor("~~"));
不行。。。一开始我以为是跳过了某些语句,所以我加了Log.i
查看,我认为没有跳过的语句。
static class ViewHolder extends RecyclerView.ViewHolder{
public MyCustomEditTextListener myCustomEditTextListener2;
TextView textView;
EditText editText;
public ViewHolder(@NonNull View itemView, MyCustomEditTextListener myCustomEditTextListener2) {
super(itemView);
textView=itemView.findViewById(R.id.textView2);
editText=itemView.findViewById(R.id.editText2);
this.myCustomEditTextListener2=myCustomEditTextListener2;
this.editText.addTextChangedListener(myCustomEditTextListener2);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos=getAdapterPosition();
if(swtich==0) { //swtich is defined in adapter class(static int swtich=0;)
Log.i("info", "click event & swith");
textView.setHighlightColor(Color.parseColor("#e1bee7"));
//editText.setHighlightColor(Color.parseColor("#FFF1FF"));
swtich = 1;
}else if(swtich==1){
textView.setHighlightColor(Color.parseColor("#FFFFFF"));
editText.setHighlightColor(Color.parseColor("#000000"));
swtich=0;}
if(pos!=RecyclerView.NO_POSITION){
if(mListener!=null){
mListener.onItemClick(view,pos);
}
}
}
});
}
这样试试。您需要 else 条件(而不是 if-else):
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos=getAdapterPosition();
if(swtich==0) { //swtich is defined in adapter class(static int swtich=0;)
Log.i("info", "click event & swith");
textView.setHighlightColor(Color.parseColor("#e1bee7"));
editText.setHighlightColor(Color.parseColor("#FFF1FF"));
swtich = 1;
}else{
textView.setHighlightColor(Color.parseColor("#FFFFFF"));
editText.setHighlightColor(Color.parseColor("#000000"));
swtich=0;
}
if(pos!=RecyclerView.NO_POSITION){
if(mListener!=null){
mListener.onItemClick(view,pos);
}
}
}
});