Android 是否使用计时器刷新listview而不进行搜索?
这是刷新listview以检查sqlite中任何新条目的计时器。每当计时器运行时,它会一次又一次地刷新列表视图。在这种情况下,我希望计时器对listview没有影响。它应该在末尾添加新条目,而无需再次向下滚动Android 是否使用计时器刷新listview而不进行搜索?,android,sqlite,listview,chat,custom-adapter,Android,Sqlite,Listview,Chat,Custom Adapter,这是刷新listview以检查sqlite中任何新条目的计时器。每当计时器运行时,它会一次又一次地刷新列表视图。在这种情况下,我希望计时器对listview没有影响。它应该在末尾添加新条目,而无需再次向下滚动 Timer t = new Timer(); t.scheduleAtFixedRate(new TimerTask() { @Override publ
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));
}
这是在计时器中调用的函数
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));
}
private void get\u chat\u data(){
字符串fuid=getIntent().getExtras().getString(“uid”);
HashMap user=session.getUserDetails();
字符串uid=user.get(SessionManager.KEY\u uid);
//从sqlite获取用户详细信息
db=新的SQLiteHandler(getApplicationContext());
/*
*
*发送者聊天
*
* */
HashMap用户信息=db.CHAT\u列表视图中的数据(fuid,uid);
字符串s_chat=user_info.get(“s_chat”);
字符串mtime=user_info.get(“mtime”);
字符串mdate=user_info.get(“mdate”);
字符串spic=user_info.get(“s_pic”);
字符串[]s_chat1=s_chat.split(“:”);
字符串[]mtime1=mtime.split(“”);
字符串[]mdate1=mdate.split(“:”);
字符串[]spic1=spic.split(“:”);
/**
*
*接收聊天
*
* */
HashMap用户\u info1=db.CHAT\u数据\u在\u列表\u视图1中(fuid,uid);
String r_chat=user_info1.get(“r_chat”);
字符串rpic=user_info1.get(“r_pic”);
String friendid=user_info1.get(“com_id”);
字符串[]r_chat1=r_chat.split(“:”);
字符串[]rpic1=rpic.split(“:”);
list.setAdapter(新的自定义适配器聊天(this,s_chat1,r_chat1,spic1,rpic1,mtime1,mdate1));
}
首先,反复调用setAdapter
是一个错误。只需调用notifyDataSetChanged()
即可刷新列表中的数据。
它还将定位
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));
}
你应该这样做:
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));
}
private void get_chat_data() {
// your code to fetch records to fill in the array
if(adapter==null)
{
adapter= new Custom_Adapter_chat(this, s_chat1, r_chat1, spic1, rpic1, mtime1, mdate1);
list.setAdapter(adapter);
}
else
{
adapter.updateData(myNewData); //update your adapter's data
adapter.notifyDatasetChanged();
}
}
看起来您在
get_chat_data()的末尾设置了一个新适配器代码>函数。这将丢失列表/回收器视图的滚动状态。因此,获取原始适配器的引用,并尝试使用它添加新数据。我可以问您我应该将此代码放在何处吗?我无法在@sweetwiser使其工作。您需要将其放在get_chat_data
方法中,以代替行列表。setAdapter(新自定义_adapter_chat(这个,s_chat1,r_chat1,spic1,rpic1,mtime1,mdate1));
heyy我能问一下我如何将数据添加到列表视图吗这里的代码对我帮助很大,但我无法将数据传输到列表视图。help me@SweetWisherツ