Изменение операторов цвета в Viewholder не работает; только одно утверждение работает правильно - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь сделать адаптер для реселлера, просматривающий событие щелчка, меняющий цвет текста и текст редактирования. Когда я просто добавляю

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);


                            }
                        }
                    }
                });
            }

1 Ответ

0 голосов
/ 19 марта 2020

Попробуй вот так. Вам необходимо условие 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);
                }
            }
        }
    });
...