2012-05-14 131 views
2

假设我有来自服务器或本地数据库的数据。我在listview中显示它们。我在每个listview项目中都有四五个textview。现在我想每秒刷新一次listview项目(需求是这样的)。每秒更新ListView项目

我该如何做到这一点。 notifyDataSetChanged()是我知道的。

我想要一些强健的解决方案,不会使活动滞后。

请指导。

+1

我认为最好的办法是只notifyDataSetChanged,我有一个疑问,那就是为什么你需要刷新列表视图中的每一秒。我认为只要您收到任何数据就可以刷新它。 –

+0

你想要更新的数据首先显示吗?如果是这种情况,活动将会滞后。 –

回答

1

我觉得使用notifyDataSetChanged是做到这一点的唯一方法。

为什么你认为这可能会使活动滞后?

+0

使用带定时器的处理程序来刷新列表和ui。 – Hulk

+0

它只会改变视图的某些属性。如果正确实现getView()方法,则不会在notifyDataSetChanged期间创建对象。 –

+0

我想不断更新TextView的背景由于一个要求。在listview中的其他textview也是如此。 –

1

我认为你应该减少你的更新频率。 1秒对于更新太小。 你可以使用AsyncTask 每1秒执行一次。与postDelay()

1
private Thread t; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 



     t = new Thread(){ 
      @Override 
      public void run() { 
       try { 
        synchronized(this){ 
         wait(2000); // set time whatever you want 
        } 


       } 
       catch(InterruptedException ex){ 
        ex.printStackTrace(); 
       } 

       lv.clear(); 
       onCreate(null); 
      } 
     }; 
      t.start(); 
    } 

帮助试试这个..

+0

这是我的想法。在onCreate刷新活动中传递null而不会影响视图:) –

+0

hv u用它做了什么? –