持有人cardview改变textview颜色错误

Holder cardview change textview color error

我想在 cardview 中更改我的 textview 的颜色,当它的值为 "kritis" 或 "kurang" 但不知何故每次当我的 textview 在位置 0 并且它的值是 kritis 或 kurang 它总是在位置 0 和位置 7 更改颜色 textiew,并且当它在位置 1 时,它也会在位置 8 设置颜色文本视图等等......然后我尝试使用 logd 来查看我的 setcolor 启动了多少次及其唯一1x(仅更改颜色位置 1 和 7 时)或 2x(更改颜色文本位置 0、1、7、8 时)(我的 cardview 在 recyclerview 内)

这是我的适配器代码

public class ListAdapter extends RecyclerView.Adapter<form_mhs_04_fragment2.ListAdapter.ViewHolder>
    {
        private ArrayList<DataNote> dataList;

        public ListAdapter(ArrayList<DataNote> data)
        {
            this.dataList = data;
        }

        public class ViewHolder extends RecyclerView.ViewHolder
        {
            TextView textViewIPKcap;
            TextView textViewIPKkat;
            TextView textViewSKScap;
            TextView textViewSKSkat;
            TextView textViewCatatan;
            TextView textViewSemester;

            public ViewHolder(View itemView)
            {
                super(itemView);
                this.textViewSemester = (TextView) itemView.findViewById(R.id.TV04_cardview_semester);
                this.textViewIPKcap = (TextView) itemView.findViewById(R.id.TV04_cardview_ipkcap);
                this.textViewIPKkat = (TextView) itemView.findViewById(R.id.TV04_cardview_ipkkat);
                this.textViewSKScap = (TextView) itemView.findViewById(R.id.TV04_cardview_skscap);
                this.textViewSKSkat = (TextView) itemView.findViewById(R.id.TV04_cardview_skskat);
                this.textViewCatatan = (TextView) itemView.findViewById(R.id.TV04_cardview_catatan);
            }
        }

        @Override
        public form_mhs_04_fragment2.ListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
        {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.form_mhs_04_cardview, parent, false);

            form_mhs_04_fragment2.ListAdapter.ViewHolder viewHolder = new form_mhs_04_fragment2.ListAdapter.ViewHolder(view);
            return viewHolder;
        }

        @Override
        public void onBindViewHolder(form_mhs_04_fragment2.ListAdapter.ViewHolder holder, final int position)
        {
            holder.textViewIPKkat.setText(dataList.get(position).getIpkkat());
            holder.textViewIPKcap.setText("IPK : "+dataList.get(position).getIpkcap());
            holder.textViewSKSkat.setText(dataList.get(position).getSkskat());
            holder.textViewSKScap.setText("SKS : "+dataList.get(position).getSkscap()+" SKS");
            holder.textViewCatatan.setText(dataList.get(position).getCatatan());
            holder.textViewSemester.setText(dataList.get(position).getSemester());
            if(holder.textViewSKSkat.getText().equals("kritis") || holder.textViewSKSkat.getText().equals("kurang")){
                holder.textViewSKSkat.setTextColor(Color.rgb(255,0,0));
                Log.d("testing", "ayayaya");
            }
            if(holder.textViewIPKkat.getText().equals("kritis") || holder.textViewIPKkat.getText().equals("kurang")){
                holder.textViewIPKkat.setTextColor(Color.rgb(255,0,0));
                Log.d("testing", "ayayaya");
            }

            holder.itemView.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                }
            });
        }
        @Override
        public int getItemCount()
        {
            return dataList.size();
        }
    }

这就是我向适配器发送数据的方式

public void initListView(String UserId){
        Call<ListForm4Response> getListForm4 = mApiService.getListForm4(
                UserId
        );
        getListForm4.enqueue(new Callback<ListForm4Response>() {
            @Override
            public void onResponse(Call<ListForm4Response> call, Response<ListForm4Response> response) {
                boolean iserror_ = response.body().getError();
                if (iserror_ == false) {
                    List<List_Form4> list = new ArrayList<>();
                    list = response.body().getEvalMhsf4();
                    ipk_cap = new String[list.size()];
                    ipk_kat = new String[list.size()];
                    sks_cap = new String[list.size()];
                    sks_kat = new String[list.size()];
                    catatan = new String[list.size()];
                    semester = new String[list.size()];
                    for (int i =0;i<list.size();i++) {
                        ipk_cap[i] = list.get(i).getIpkMhs();
                        ipk_kat[i] = list.get(i).getKategoriIpk();
                        sks_cap[i] = String.valueOf(list.get(i).getSksMhs());
                        sks_kat[i] = list.get(i).getKategoriSks();
                        catatan[i] = list.get(i).getCatatan();
                        semester[i]  = list.get(i).getSemester();
                    }

                    ArrayList data = new ArrayList<DataNote>();
                    for (int i = 0; i < list.size(); i++)
                    {
                        data.add(
                                new DataNote
                                        (
                                                ipk_cap[i],
                                                ipk_kat[i],
                                                sks_cap[i],
                                                sks_kat[i],
                                                catatan[i],
                                                semester[i]
                                        ));
                    }

                    mListadapter = new form_mhs_04_fragment2.ListAdapter(data);
                    listview.setAdapter(mListadapter);

                }
            }
            @Override
            public void onFailure(Call<ListForm4Response> call, Throwable t) {
                Toast.makeText(getActivity().getBaseContext(), "Koneksi Jaringan Bermasalah", Toast.LENGTH_SHORT).show();
                Log.e("debug", "onFailure: ERROR > " + t.toString());
                Intent intent = new Intent(getActivity().getBaseContext(), Form_Mhs_Menu.class);
                getActivity().startActivity(intent);
            }
        });
    }

这是我的数据笔记

package com.example.bimbinganpasi.Form_04.adapter;

public class DataNote {
    String ipkkat,ipkcap,skskat,skscap,catatan,semester;

    public DataNote(String ipkcap, String ipkkat, String skscap, String skskat,String catatan ,String semester) {
        this.ipkkat = ipkkat;
        this.ipkcap = ipkcap;
        this.skskat = skskat;
        this.skscap = skscap;
        this.catatan = catatan;
        this.semester = semester;
    }

    public String getIpkkat() {
        return ipkkat;
    }

    public String getIpkcap() {
        return ipkcap;
    }

    public String getSkskat() {
        return skskat;
    }

    public String getSkscap() {
        return skscap;
    }

    public String getCatatan() {
        return catatan;
    }

    public String getSemester() {
        return semester;
    }
}

尝试添加其他设置默认背景颜色:

if(holder.textViewSKSkat.getText().equals("kritis") || holder.textViewSKSkat.getText().equals("kurang")){
    holder.textViewSKSkat.setTextColor(Color.rgb(255,0,0));
    Log.d("testing", "ayayaya");
} else {
    holder.textViewSKSkat.setTextColor(Color.rgb(0,0,0)); //TODO : SET DEFAULT COLOR
}


if(holder.textViewIPKkat.getText().equals("kritis") || holder.textViewIPKkat.getText().equals("kurang")){
    holder.textViewIPKkat.setTextColor(Color.rgb(255,0,0));
    Log.d("testing", "ayayaya");
} else {
    holder.textViewIPKkat.setTextColor(Color.rgb(0,0,0)); //TODO : SET DEFAULT COLOR
}

在我的案例中,我尝试了这段代码..

holder.textview.setColor(ContextCompat.getColor(YourActivity.this,R.color.colorPrimary));