首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android中Holder的循环视图滚动问题

Android中Holder的循环视图滚动问题
EN

Stack Overflow用户
提问于 2018-06-29 04:25:33
回答 1查看 90关注 0票数 2

我已经创建了一个循环视图适配器,每当我单击循环视图行时,我都会在其中填充视图持有者对象的row.so,即我始终拥有最新的视图持有者对象。

Issue是每当我滚动、回收、视图调用、绑定视图持有者以及我的视图持有者的值时,无需单击任何行即可更改运行时

我已经尝试了很多方法来保持单击行的当前对象,但是我没有得到那个enter code here

如果有人遇到过这个问题,请给予帮助

我在runnable下面执行,当时我得到了不同的Holder值

代码语言:javascript
复制
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());
                }
            }
        }
    }

提前谢谢..

EN

回答 1

Stack Overflow用户

发布于 2018-06-29 04:59:31

OnBindViewHolder()会在视图发生变化时被调用,比如滚动、键盘打开/关闭、按下home或recents按钮等。为ViewHolder类创建一个全局变量,并在onClick()中设置值。例如:

代码语言:javascript
复制
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做任何你想做的事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51090737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档