2016-05-24 9 views
0

Ich habe ListView, die Daten haben. Daten kommen vom Server und ich möchte die ListView nach alle 5 Sekunden aktualisieren. Wie macht man das? Ich bin neu in der Android-Entwicklung. Bitte hilf mir. Hier ist mein Code ..android, wie ListView alle 5 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(); 
    } 
} 

auch versucht, diese onCreate

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 

    @Override 
    public void run() { 
     adapter.notifyDataSetChanged(); 
     handler.postDelayed(this, 5000); 
    } 
}, 5000); 

i Daten erhalten mit dieser Methode

public void getData() { 
    class GetDataJSON extends AsyncTask<String, Void, String> { 
     //String recID = ; 
     //String userID = email; 
     @Override 
     protected String doInBackground(String... params) { 
      DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams()); 
      HashMap<String, String> user = db.getUserDetails(); 

      //String name = user.get("name"); 
      // Semail = user.get("email"); 

      String semail = user.get("email"); 
      final String remail = rremail; 

      HttpPost httppost = new HttpPost("http://samplechatapp.gear.host/myphpfile.php?sender_email="+semail+"&reciver_email="+remail+"&fatch_server_data=true"); 

      // Depends on your web service 
      httppost.setHeader("Content-type", "application/json"); 

      InputStream inputStream = null; 
      String result = null; 
      Log.i("","processing entity"); 
      try { 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 

       inputStream = entity.getContent(); 
       // json is UTF-8 by default 
       BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
       StringBuilder sb = new StringBuilder(); 

       String line = null; 
       while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
        Log.i("",line); 
       } 
       result = sb.toString(); 
       Log.i("",result); 
      } catch (Exception e) { 
       // Oops 
      } finally { 
       try { 
        if (inputStream != null) inputStream.close(); 
       } catch (Exception squish) { 
       } 
      } 
      return result; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      myJSON = result; 
      showList(); 
     } 
    } 
    GetDataJSON g = new GetDataJSON(); 
    g.execute(); 
} 

aber wenn ich öffnen Sie die Listenansicht app Absturz bitte hilf mir ich bin sehr neu in android

+0

Sie können java.util.Timer & java.util.TimerTask verwenden, um Timer-Aufgaben zu erstellen. Außerdem sollten Sie Asynctask verwenden oder einen neuen Thread erstellen, um Daten vom Server zu holen, da es lange dauern kann, um Daten zu erhalten, die den Hauptthread blockieren und schließlich abstürzen können. –

+0

Inside run müssen Sie zuerst JSON wieder parsen und Array (personList) auffüllen und dann adapter.notifydatasetchanged –

+0

@MarkoNiciforovic werden Sie bitte meinen Code bearbeiten Ich bin neu Android – Malik

Antwort

0

Sie sollten die API aufrufen, nachdem Sie die Antwort vom ersten API-Anruf erhalten haben. Sie können notifyDataSetChanged() das posten.

+0

werden Sie bitte meinen Code bearbeiten? – Malik

+0

Meine Daten zeigen in Listview-Problem ist dies nicht aktualisieren – Malik

0

Rufen Sie notifyDataSetChanged() an, wenn Daten geändert werden. Vermeiden Sie darüber hinaus die Verwendung von ListView anstelle von RecyclerView.

Verwandte Themen