首页 > 解决方案 > 如何根据数据高亮TextView中的单词

问题描述

我想突出显示 TextView 中与从数据库中获取的数据匹配的文本。我使用下面的代码,但 TextView 中的文本不会改变颜色。这是我的代码,但 setter 和 getter 看起来没用。

class getICT {
        @SerializedName("eng")
        private String eng;
        @SerializedName("bhs")
        private String bhs;
        @SerializedName("kor")
        private String kor;

        public getICT(String eng, String bhs, String kor, String imageURL){
            this.eng = eng;
            this.bhs = bhs;
            this.kor = kor;
        }

        /*
        GETTERS N SETTERS
         */
        public String getEng() {
            return eng;
        }
        public String getBhs() {
            return bhs;
        }
        public String getKor() {
            return kor;
        }

        @Override
        public String toString() {
            return eng;
        }

    }

这是我的界面,从数据库中获取

interface MyAPIService {
        @GET("/ICT03/danger.php")
        Call<getICT[]> getICT();
    }

我编写代码以从此处突出显示文本

ShowDetected.MyAPIService myAPIService = ShowDetected.RetrofitClientInstance.getRetrofitInstance().create(ShowDetected.MyAPIService.class);

        Call<getICT[]> call = myAPIService.getICT();
        call.enqueue(new Callback<getICT[]>() {
            @Override
            public void onResponse(Call<getICT[]> call, Response<getICT[]> response) {

                getICT[] icts = response.body();

                String s = showInput.getText().toString();

                for(int i = 0; i < icts.length; i++) {
                    if (icts[i].equals(s)) {
                        showInput.setText(s);
                        showInput.setTextColor(Color.RED);
                    } else {
                        showInput.setTextColor(Color.BLACK);
                    }
                }


            }

            @Override
            public void onFailure(Call<getICT[]> call, Throwable t) {

                Toast.makeText(ShowDetected.this, ""+t.getMessage().toString(), Toast.LENGTH_SHORT).show();

            }
        });

标签: javaandroidretrofit2highlight

解决方案


你的代码不正确,试试这个

boolean isHighlight = false
for(int i = 0; i < icts.length; i++) {
    if (icts[i].equals(s)) {
         isHighlight = true;
         break;
    }
}
showInput.setTextColor(isHighlight ? Color.RED : Color.BLACK);

推荐阅读