在列表视图中刷新搜索栏 + 文本视图

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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 方法吗?

以上是关于在列表视图中刷新搜索栏 + 文本视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在页面背面保存部分视图html

如何在刷新表视图之前获取视图模型中的存储库列表?

android - 搜索列表视图?

刷新控件和搜索栏导致表格视图/滚动视图出现奇怪的偏移,如何解决?

从编辑文本中过滤列表视图

App测试