解决方案 »

  1.   

    TimerTask 定时器来做,不就可以了。 
      

  2.   

    还是不行啊 是不是线程 的优先级要高于 simpleadapter 每次都是要线程结束后simpleadapter才会运行  
    能不能给出详细一点的方法啊
      

  3.   

    使用handler+线程动态刷新界面的一般顺序是这样的:
              线程:更新数据,handler:刷新界面
    启用一个新的线程去获取远程服务器的数据,然后通知handler去跟新ListView
    我没有看到你在handler里面做了什么更新ListView的操作,你在里面加载数据是不正确的,加载数据应当放在Thread里面,你的代碼存在很多問題,特別是這句:handler.post(runnable);你通過延遲時間來等待數據的加載完成,這是很不科學的。
    可以参考成这样:
     Handler handler = new Handler() {
                public void handleMessage (Message msg) {//此方法在ui线程运行
                    switch(msg.what) {
                    case MSG_SUCCESS:
                        list.setAdapter(simpleAdapter);
                        break;
          
                    case MSG_FAILURE:
                         
                        break;
                    }
                }
            };在Thread裏面更新數據:
    Runnable runnable = new Runnable() {
             
            @Override
            public void run() {//run()在新的线程中运行
                final String urlPath = "http://et.huobi.com/staticet/ticker_btc_json.js";
                String jsonString = getJsonContent.getJsonContent(urlPath);
                //解析string类型的json数据并返回类型为item的一个对象中
               item item = JsonTools.getItem(jsonString);
               if(item!=null){
                    listItem.put("high",items.getHigh());
                   istItem.put("low",items.getLow());
                   listItem.put("last",items.getLast());
                   listItem.put("buy",items.getBuy());
                    listItem.put("sell",items.getSell());
                   listItems.add(listItem);  
               }
                 
               //将item对象返回到handler当中
                handler.obtainMessage(MSG_SUCCESS,item).sendToTarget();        }
        };
    在onCerat中
     SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
                    R.layout.item, 
                    new String[] { "high", "low", "last","buy","sell" },
                    new int[] { R.id.high, R.id.low, R.id.last,R.id.buy,R.id.sell });
            ListView list = (ListView) findViewById(R.id.listView1);
    具體細節你可以在調整調整。
      

  4.   

    我现在这样加 的还是不行  timer = new Timer();
         timer.schedule(new RemindTask(), 3000);
    System.out.println("000"+items.getHigh());//用于调试

    SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
         R.layout.item, 
         new String[] { "high", "low", "last","buy","sell" },
         new int[] { R.id.high, R.id.low, R.id.last,R.id.buy,R.id.sell });
         ListView list = (ListView) findViewById(R.id.listView1);
         simpleAdapter.notifyDataSetChanged();
         list.setAdapter(simpleAdapter);
        
         System.out.println("333"+items.getHigh());//用于调试
     class RemindTask extends TimerTask {
            public void run() {
             handler.post(runnable);
            
                timer.cancel(); //Terminate the timer thread
            }
        }
    现在我用的
    System.out.println("333"+items.getHigh());//用于调试
    这个语句显示的还是333
      

  5.   

    LZ你数据传到handler中后没有进行刷新列表数据当然不出来了
    在handler中加上simpleAdapter.notifyDataSetChanged();在看下
      

  6.   

    回复#3  
    像你那样做还是不行啊  Handler handler = new Handler() {
            public void handleMessage (Message msg) {//此方法在ui线程运行
                switch(msg.what) {
                case MSG_SUCCESS:
                
                 items = (item)msg.obj;
                 System.out.println("1111"+items.getHigh());
                 //simpleAdapter.notifyDataSetChanged();
                 list.setAdapter(simpleAdapter);
                
                
                      
                   
                    break;
     
                case MSG_FAILURE:
                    
                    break;
                }
            }
        };
    这里的111都没有打印出来
    好像这里面的语句都没有执行啊
      

  7.   

    回复#3
    好像你没有调用Runnable 方法啊 我现在还是不能够刷新