2011-06-09 113 views
1

我有一个列表视图,其中每个textview应该显示seekbar的值。我已经得到它的工作,一旦onStopTrackingTouch调用一个seekbar我更新相应的textview。我希望在用户移动搜索栏时发生更改,但由于列表视图不会经常刷新,因此遇到问题时也会出现问题。在列表视图中刷新seekbar + textview

enter image description here

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

回答

1

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

+0

如果列表视图中有多于15行,会发生什么情况? – milind 2011-07-28 07:21:13

+0

它工作正常:-) – 2011-07-28 12:27:28

+0

Ravi,请你为此添加代码捕捉排序。更新你的上面的答案,让人们了解示例演示人员可能会感谢U与Grete Work of U.因为大多数人在滚动时遇到了问题,它无法保持它以前的状态。 – milind 2011-07-29 10:05:17

1

您可以在OnSeekBarChangeListener

希望这有助于叫notifyDataSetChanged

+0

我试过了,但它似乎把搜索栏的焦点关闭了,因此用户无法寻找 – 2011-06-09 19:10:52

+1

好吧。我在我的适配器中尝试了这个东西,并在每个seekBar的getView方法中调用setOnSeekBarChangeListener。对不好的代码格式化,不知道如何处理评论。希望这个回答你的问题。 公共无效onProgressChanged(搜索栏搜索条,INT进步, \t \t \t布尔FROMUSER){ 的TextView mProgressText =(TextView的)((查看)seekBar.getParent())findViewById(R.id.progress)。 mProgressText.setText(progress +“”); } – Gopal 2011-06-09 19:37:07

1

我找到了一种方法来实现这种行为,当我重写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) {} 

     }); 

这是解释我的意思enter image description here

的图像,我希望这可以帮助别人。

+0

您的解决方案正常工作。我的问题是我用我的适配器来获得这个功能,我运行了除MyAdapter.this.getItem((Integer)seekBar.getTag())以外的所有代码片段。 .setprogress是无法由android studio解决的。我想我会更新我的getIem方法,但我无法进行更新。你能为我显示你的getItem方法吗? – salih 2015-06-15 11:48:36