私はListView
持っているデータを持っています。データはサーバーからのもので、私はListView
を5秒ごとに更新します。これを行う方法?私はアンドロイド開発に新しいです。私を助けてください。ここに私のコードは...あるandroidどのように5秒ごとにリストビューを更新する
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();
}
}
も、私はこの方法
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(); }
しかし、私は、リストビューアプリのクラッシュをしてください開いてデータを取得し、この
onCreate
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
handler.postDelayed(this, 5000);
}
}, 5000);
を試してみました私は非常に新しいアンドロイドで助けてください
java.util.Timerおよびjava.util.TimerTaskを使用してタイマータスクを作成できます。 Asynctaskを使用するか、サーバーからデータを取得するために新しいスレッドを作成する必要があります。データを取得するのに時間がかかることがあり、メインスレッドをブロックし、最終的にクラッシュする可能性があります。 –
あなたは最初にjsonをもう一度解析して配列(personList)をポップしてからadapter.notifydatasetchangedを呼び出す必要があります –
@MarkoNiciforovic私のコードを編集してください私は新しいAndroidです – Malik