我試圖每隔兩秒刷新我的ListView
。第一個loadingTask
被執行,並且適配器從arraylist聊天中填充ListView。然後每兩秒鐘調用refreshAdapterLoadingTask
並作爲連續循環執行並再次填充數組列表聊天。我需要從ArrayList
中刪除以前的項目,並僅保留新項目。任何關於如何實現道路功能最後的想法都可以實施。目前,我的數組不斷填充來自先前httpcall的項目作爲循環。每兩分鐘刷新一次listview android
int refreshInterval =2000; //set refresh interval
class loadingTask extends AsyncTask<Void, Void,Void> {
//arraylist
chat = new ArrayList<Chat>();
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
...
for (int i=0;i<room_length;i++){
JSONObject obj_value = responseArray.getJSONObject(i);
if (obj_value.has("@id"))
id=obj_value.getString("@id");
if (obj_value.has("@version"))
version=obj_value.getString("@version");
...
chatAdapter = new ChatAdapter(m,chat);
msgList.setAdapter(chatAdapter); //set data to listview
chatAdapter.notifyDataSetChanged();//update changes
msgList.setSelection(msgList.getAdapter().getCount()-1);
handler.postDelayed(refreshView, refreshInterval);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}
public static class refreshAdapterLoadingTask extends AsyncTask<Void, Void,Void> {
private String isMarketingMessage;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
//if(chat!=null)
//chat.clear();
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
try {
...
for (int i=0;i< responseArray.length();i++){
JSONObject obj_value = responseArray.getJSONObject(i);
if (obj_value.has("@id"))
id=obj_value.getString("@id");
if (obj_value.has("@version"))
version=obj_value.getString("@version");
if (obj_value.has("@content"))
content=obj_value.getString("@content");
if (obj_value.has("@sentDate"))
sentDate=obj_value.getString("@sentDate");
if (obj_value.has("player"))
player=obj_value.getString("player");
chat.add(new Chat(isMarketingMessage, id, version,content, sentDate, player));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//remove previous arraylist values
// for (int i=0;i<previousArrayListSize;i++){
// chat.remove(i);
//}
handler.postDelayed(refreshView, refreshInterval);
chatAdapter = new ChatAdapter(m,chat);
chatAdapter.notifyDataSetChanged();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}
}
}
更新
public static void process() {
new Thread(new Runnable() {
public void run() {
try {
// LiveScoredata();
new refreshAdapterLoadingTask().execute();
} catch (Exception e) {
}
m.runOnUiThread(new Runnable() {
public void run() {
try {
if (chat!=null)
chat.clear();
//your list fill hear
chatAdapter.notifyDataSetChanged();
} catch (Exception e) {
}
}
});
}
}).start();
}
我需要刪除ArrayList中預先設定的項目只有不通知用戶的ArrayList是明確 – Dimitri