2016-05-23 9 views
-1

Ich habe eine Listenansicht Daten kommen vom Server und zeigen in der Listenansicht. Ich möchte listview alle 10 Sekunden aktualisieren Wie kann ich das hier tun ist mein Code der Listenansicht.Wie man Android Listview alle 10 Sekunden aktualisieren?

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

Wenn Sie es nur im 10-Sekunden-Intervall unabhängig von den vom Server gesendeten Daten aktualisieren möchten, verwenden Sie eine Timer.scheduleAtFixedRate() –

+0

wie Sie es verwenden, bitte sagen Sie mir, ich bin neu in Android –

+0

Sie können CountDownTimer auch verwenden . Starten Sie den Timer für 10 Sekunden und übergeben Sie die aktualisierte ArrayList an Adapter und führen Sie notifySetDataChange am Adapter aus. – Dhaval

Antwort

0

Wie ein Stück Code in einem festen Intervall nur in diesem Fall Update Listenansicht

//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(); 
    } 
} 

Der Code ist als Beispiel wiederholen.

+0

funktioniert nicht für mich geben viel Fehler –

+0

Willst du sagen, was sie sind? –

Verwandte Themen