在按钮单击侦听器的卡片视图中逐字突出显示字符串文本

Highlight text of String word by word inside card view on button click listener

单击 CardView 中的按钮时,我必须突出显示特定单词。我需要在其中突出显示单词的文本也是 CardView 的一部分。 问题是,当我单击按钮时,其他 CardViews 中的文本也被突出显示。

是什么原因造成的,我该如何解决这个问题?

这是我的代码:

 @Override
public void onBindViewHolder(final DuaViewHolder duaViewHolder,final  int i) {

    ci = allDuasLists.get(i);
    duaViewHolder.arebicText.setText(ci.getDuas());
    duaViewHolder.arebicEuivalantText.setText(ci.getArebicText());
    duaViewHolder.nativeText.setText(ci.getNativeText());
    mp = new MediaPlayer();
    duaViewHolder.playAudio.setBackgroundResource(R.drawable.play_48);

      class MyTimer extends CountDownTimer {
          public MyTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
            WordtoSpan = new SpannableString(CurrentDua);
        }
        @Override
        public void onFinish() {
            k=0;
            this.cancel();
            Toast.makeText(context, "Timer finished", Toast.LENGTH_LONG).show();
        }
        @Override
        public void onTick(long millisUntilFinished) {
                WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), arrString[k], arrString[k + 1], Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                k++;
                duaViewHolder.arebicText.setText(WordtoSpan);
        }
    }

    duaViewHolder.playAudio.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            ci = allDuasLists.get(i);
            CurrentDua = ci.getDuas();
            Log.e("Current Dua", CurrentDua);
            arrString = new int[CurrentDua.length() + 1];
            MakeSubString();
            duaViewHolder.playAudio.setBackgroundResource(R.drawable.stop_48);
            MyTimer timer = new MyTimer(mp.getDuration() * 1000, 1300);
            timer.start();
            k = 0;
        }

    });
}

这是它的样子:

尝试这种方式,而不是从列表

的 onclicklistener 中获取 ci 的值
ci = allDuasLists.get(i);

将ci设置为duaViewHolder.playAudio标签

duaViewHolder.playAudio.setTag(ci);

并在 onClickListener 中得到它

ci = /*(Cast to your ci class)*/ v.getTag();