【发布时间】:2016-01-26 09:40:29
【问题描述】:
这是刷新列表视图以检查 sqlite 中的任何新条目的计时器。每当计时器结束时,它都会一次又一次地刷新列表视图。在这种情况下,我希望计时器对列表视图没有影响。它应该在最后添加新条目,而无需再次向下滚动。
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
get_chat_data();
}
});
}
}, 500, 1000);
这是定时器中调用的函数
private void get_chat_data() {
String fuid = getIntent().getExtras().getString("uid");
HashMap<String, String> user = session.getUserDetails();
String uid = user.get(SessionManager.KEY_UID);
// Fetching user details from sqlite
db = new SQLiteHandler(getApplicationContext());
/*
*
* sender chat
*
* */
HashMap<String, String> user_info = db.CHAT_DATA_IN_LIST_VIEW(fuid, uid);
String s_chat= user_info.get("s_chat");
String mtime= user_info.get("mtime");
String mdate= user_info.get("mdate");
String spic= user_info.get("s_pic");
String [] s_chat1 = s_chat.split(":");
String [] mtime1 = mtime.split("=");
String [] mdate1 = mdate.split(":");
String [] spic1 = spic.split(":");
/**
*
* reciver chat
*
* */
HashMap<String, String> user_info1 = db.CHAT_DATA_IN_LIST_VIEW1(fuid, uid);
String r_chat= user_info1.get("r_chat");
String rpic= user_info1.get("r_pic");
String friendid= user_info1.get("com_id");
String [] r_chat1 = r_chat.split(":");
String [] rpic1 = rpic.split(":");
list.setAdapter(new Custom_Adapter_chat(this, s_chat1, r_chat1, spic1, rpic1, mtime1, mdate1));
}
【问题讨论】:
-
看起来你在
get_chat_data();函数的末尾设置了一个新的适配器。这将丢失您的列表/回收器视图的滚动状态。因此,获取对原始适配器的引用,并尝试使用它添加新数据。
标签: android sqlite listview chat custom-adapter