Это таймер, чтобы обновить список, чтобы проверить любую новую запись в 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();' функцию. Это потеряло бы статус прокрутки списка/ресайзера. Итак, получите ссылку на оригинальный адаптер и попробуйте добавить к нему новые данные. –
Возможный дубликат [Listview Прокрутка до конца списка после обновления списка] (http://stackoverflow.com/questions/3606530/listview-scroll-to-the-end-of-the-list-after-updating -the-list) –