【问题标题】:Refresh seekbar + textview in a listview在列表视图中刷新搜索栏 + 文本视图
【发布时间】:2011-09-11 23:19:02
【问题描述】:

我有一个列表视图,其中每个文本视图都应该显示搜索栏的值。我已经让它工作了,一旦为搜索栏调用 onStopTrackingTouch,我就会更新相应的文本视图。我希望在用户移动搜索栏时发生更改,但我在执行相同操作时遇到了麻烦,因为列表视图不会经常刷新。

实现这一目标的理想方法是什么?

【问题讨论】:

    标签: android listview textview seekbar


    【解决方案1】:

    您可以拨打notifyDataSetChanged

    OnSeekBarChangeListener

    希望对您有所帮助。

    【讨论】:

    • 我试过了,但它似乎将焦点从搜索栏上移开,导致用户无法搜索
    • 好的,明白了。我在我的适配器中尝试了这个东西,并在 getView 方法中为每个 seekBar 调用了 setOnSeekBarChangeListener。抱歉代码格式错误,不知道如何在评论中做。希望这能回答你的问题。 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { TextView mProgressText = (TextView) ((View)seekBar.getParent()).findViewById(R.id.progress); mProgressText.setText(进度 + ""); }
    【解决方案2】:

    这就是我所做的,我在 getView 之外定义了一个触摸侦听器,将其设置为 getview 中 seekbar 的 TouchListener。 TouchListener 将视图作为参数返回,我得到了视图的父视图,然后对 tectview 进行了 findViewByID 搜索并更新了它。

    【讨论】:

    • 如果您的列表视图中的行数超过 15 行会怎样?
    • Ravi,你能否为此添加代码快照排序。更新您的上述答案,以便人们通过示例演示了解人们可能会感谢 U 的 Grete Work of U。因为大多数人在滚动 lis 时遇到问题,它无法保持以前的状态。
    • +Milind 会尽快提出来的 :-)
    • @AlexSanchez,我换了工作,需要花一些时间寻找。
    【解决方案3】:

    我找到了实现这种行为的方法,当我覆盖 ArrayAdapter 的 getView() 方法时,我将 SeekBar 标记属性设置为当前项目的位置。所以它可以帮助我在执行onProgressChanged(...) 回调时提取相应的项目。同时它让我可以更新适配器中包含的对应对象。

            sbProgress.setTag(position);
            sbProgress.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    
                View view = (View) seekBar.getParent();
                if(view != null){
                    TextView tvProgress = (TextView)view.findViewById(R.id.tv_porcentaje_numerico_obtenido);
                    tvProgress.setText(progress + "%");
                    MyAdapter.this.getItem((Integer)seekBar.getTag()).setProgres(progress);
                }
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {}
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {}
    
            });
    

    这是解释我的意思的图片

    我希望这对某人有所帮助。

    【讨论】:

    • 您的解决方案运行良好。我的问题是我已经使用我的适配器来获得这个功能,我已经运行了所有的代码 sn-ps 除了 MyAdapter.this.getItem((Integer)seekBar.getTag()).setProgres(progress); .setprogress 是 android studio 无法解决的。我想我会更新我的 getIem 方法,但我无法更新。你能帮我看看你的 getItem 方法吗?
    猜你喜欢
    • 2021-05-29
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多