我创建了一个回收视图适配器,在其中单击行即可填充视图持有者的对象。因此,每当单击回收视图行时,我便始终拥有最新的持有视图对象。
问题是每当我滚动回收视图调用时绑定视图持有人,并且我的视图持有人的值更改运行时间而无需单击任何行
我已经尝试了多种方法来保存当前单击的行的对象,但是我没有得到enter code here
如果有人遇到此问题,请提供帮助
我在可运行状态下执行,那时我获得了不同的持有人价值
private class SeekBarUpdaterRight implements Runnable {
@Override
public void run() {
if (null != rightMusicPlayerHolder) {
if (player != null) {
int curVolume = player.getCurrentPosition();
rightMusicPlayerHolder.seekMusicRight.setProgress(curVolume);
// int currentHour = curVolume / HOUR;
int currentMint = (curVolume % HOUR) / MINUTE;
int currentSec = (curVolume % MINUTE) / SECOND;
rightMusicPlayerHolder.txtDurationStartRight.setText(String.format("%02d:%02d", currentMint, currentSec));
rightMusicPlayerHolder.seekMusicRight.postDelayed(this, 100);
Log.print("==========rightMusicPlayerHolder=========" + rightMusicPlayerHolder.getAdapterPosition());
}
}
}
}
谢谢。
答案 0 :(得分:0)
OnBindViewHolder()
会在任何引起视图更改的情况下被调用,例如滚动,键盘打开/关闭,按下主页或最近按钮等。
创建ViewHolder类的全局变量,然后在onClick()
中设置值。例如:
ViewHolder clickedViewHolder;
private void setClickedViewHolder(ViewHolder clickedViewHolder) {
this.clickedViewHolder = clickedViewHolder;
}
private ViewHolder getClickedViewHolder() {
return clickedViewHolder;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.rowView.setTag(holder);
holder.rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setCurrentViewHolder((MyAdapter.ViewHolder) v.getTag());
}
});
ViewHolder currClickedViewHolder = getClickedViewHolder(); // this is the last viewHolder clicked on.
}
然后使用该ViewHolder进行任何操作。