2016-05-23 2 views
-1

У меня есть данные просмотра списка, поступающие с сервера и отображающиеся в виде списка. Я хочу обновлять список каждые 10 секунд. Как я могу это сделать, это мой код списка.Как обновить список виджетов Android каждые 10 секунд?

protected void showList() { 
    try { 
     JSONObject jsonObj = new JSONObject(myJSON); 
     peoples = jsonObj.getJSONArray(TAG_RESULTS); 

     for (int i = 0; i < peoples.length(); i++) { 
      JSONObject c = peoples.getJSONObject(i); 

      String data = c.getString(TAG_DATA); 
      final String dataaaa = rcdata.getText().toString().trim(); 
      HashMap<String, String> user_data = new HashMap<String, String>(); 
      user_data.put(TAG_DATA, data); 
      personList.add(user_data); 
     } 

     ListAdapter adapter = new SimpleAdapter(
       DataSendActivity.this, personList, R.layout.layout_chat, 
       new String[]{TAG_DATA}, 
       new int[]{R.id.data} 

     ); 

     list.setAdapter(adapter); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 
+0

Если вы просто хотите обновить его за 10 секунд, независимо от данных, отправленных сервером, используйте Timer.scheduleAtFixedRate() –

+0

как его использовать, пожалуйста, скажите мне, что я новичок в android –

+0

Вы также можете использовать CountDownTimer , Запустите таймер на 10 секунд и передайте обновленный массивList в Adapter и выполните notifySetDataChange на адаптере. – Dhaval

ответ

0

Как повторить фрагмент кода в фиксированном интервале, в этом случае обновление ListView

//instance variable for adapter 
ListAdapter adapter; 
//instance variable for timer 
Timer timer; 

//create the listview, adapter and set the adapter 
public void showList(){ 
    //method code; 
    adapter=//call adapter constructor 
    listView.setSetAdapter(adapter); 

    //create a handler to update the adapter 
    final Hanlder handler=new Handler(){ 
      //run your listview update command here. Possibly; 
      adapter.notifyDataSetChanged(); 
      //or else create a new adapter 
      adapter=new ListAdapter(//parameters); 
      listView.setAdapter(adapter); 
    } 
    //create timer and the scheduled task 
    //this will run in every 10 seconds. Make sure to stop it when you dont 
    //want it any more 
    timer=new Timer(); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
       handler.obtainMessage().sendToTarget(); 
     } 
    }, 0, 10000); 
} 

//if you want to stop the timer on onDestroy() 
@Override 
public void onDestroy(){ 
    super.onDestroy(); 
    if(timer!=null){ 
     timer.cancel(); 
    } 
} 

Код только в качестве примера.

+0

не работает для меня, дайте большую ошибку –

+0

Хотите сказать, что это такое? –

Смежные вопросы