我已经创建了一个循环视图适配器,每当我单击循环视图行时,我都会在其中填充视图持有者对象的row.so,即我始终拥有最新的视图持有者对象。
Issue是每当我滚动、回收、视图调用、绑定视图持有者以及我的视图持有者的值时,无需单击任何行即可更改运行时
我已经尝试了很多方法来保持单击行的当前对象,但是我没有得到那个enter code here
如果有人遇到过这个问题,请给予帮助
我在runnable下面执行,当时我得到了不同的Holder值
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());
}
}
}
}
提前谢谢..
发布于 2018-06-29 04:59:31
OnBindViewHolder()
会在视图发生变化时被调用,比如滚动、键盘打开/关闭、按下home或recents按钮等。为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做任何你想做的事。
https://stackoverflow.com/questions/51090737
复制相似问题