2017-01-02 39 views
1

当我点击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; 
     } 

    }); 
} 

这里是如何看起来像:

Current look

回答

1

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

进入内部onclicklistener CI值
ci = allDuasLists.get(i); 

组词到duaViewHolder.playAudio标签像

duaViewHolder.playAudio.setTag(ci); 

和内部onClickListener得到它像

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

我想你的建议,我需要添加以下代码duaViewHolder.playAudio.setTag(CI);在我的onClickListener代码 –

+0

之前,您必须添加此代码,以便在卡用户界面中填充列表中每个项目的数据。 –

相关问题