向上滚动listview后,在android中添加更多项目
我想在活动打开时显示前10条短信,然后在向上滚动后在listview中显示上面的短信 就像下面的链接一样,我可以通过向下滚动并在onscroll上加载项目来显示列表 但我想在顶部加载短信,所以我创建了一个函数来显示前10条短信,但在onscroll之后,我如何才能加载其他短信向上滚动listview后,在android中添加更多项目,android,smsmanager,Android,Smsmanager,我想在活动打开时显示前10条短信,然后在向上滚动后在listview中显示上面的短信 就像下面的链接一样,我可以通过向下滚动并在onscroll上加载项目来显示列表 但我想在顶部加载短信,所以我创建了一个函数来显示前10条短信,但在onscroll之后,我如何才能加载其他短信 public void readConversation() { StringBuilder smsBuilder = new StringBuilder(); for(int i=0
public void readConversation() {
StringBuilder smsBuilder = new StringBuilder();
for(int i=0;i < ((IdSMSCount.size()>NO_OF_SMS_TO_LOAD )? NO_OF_SMS_TO_LOAD:IdSMSCount.size()) ; i++){
cur = getContentResolver().query(Uri.parse(SMS_URI_ALL), null,"thread_id = '" + strthread + "'"+" AND "+" _id ="+IdSMSCount.get(i), null, "date DESC");
startManagingCursor(cur);
while (cur.moveToNext() ){
String smsAdress = cur.getString(
cur.getColumnIndexOrThrow("address")).toString();
String smstype = cur.getString(
cur.getColumnIndexOrThrow("type")).toString();
if(smsAdress !=null){
String smsbody = cur.getString(
cur.getColumnIndexOrThrow("body")).toString();
String smsid = cur.getString(
cur.getColumnIndexOrThrow("_id")).toString();
smsthreadid = cur.getString(
cur.getColumnIndexOrThrow("thread_id")).toString();
String smsdate = cur.getString(
cur.getColumnIndexOrThrow("date")).toString();
String smsStatus = cur.getString(
cur.getColumnIndexOrThrow("status")).toString();
String smsReadUnread = cur.getString(
cur.getColumnIndexOrThrow("read")).toString();
String contactnamelist = getContactDisplayNameByNumber(smsAdress);
Log.d("smsReadUnread without check", smsReadUnread);
Log.d("sms id", str_id);
if(smsReadUnread.equals("0"))
{
smsReadUnread = "1";
ContentValues values = new ContentValues();
values.put("read", true);
Log.d("sms id", str_id);
Log.d("sms read and unread status", smsReadUnread);
getContentResolver().update(Uri.parse("content://sms/"),values, "_id="+str_id, null);
Log.d("smsReadUnread change", smsReadUnread);
}
int index = listconvo.getFirstVisiblePosition();
View v = listconvo.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
listconvo.setSelectionFromTop(index, top);
if(!smstype.equals("3"))
{
IdSMS.add(top,smsid);
SMSDate.add(top,smsdate);
MessageList.add(top,smsbody);
NumberList.add(top,contactnamelist);
SMSType.add(top,smstype);
SMSStatus.add(top,smsStatus);
SMSRead.add(top,"1");
Log.d("Conversation id", smsid);
Log.d("Conversation Address", smsAdress);
Log.d("Conversation body", smsbody);
Log.d("Conversation date", smsdate);
Log.d("Conversation type", smstype);
Log.d("Conversation status", smsStatus);
Log.d("Conversation Read(1)-Unread(0)", smsReadUnread);
Log.d("Conversation thread_id", smsthreadid);
}
}
counter ++;
Log.e("counter ", "Counter Value "+counter);
Log.d("IdSMSCount??",""+ IdSMSCount.size());
}
cur.close();
}
Log.d("IDSMS_Conversation??",""+ IdSMSCount.size());
adaptorConversation = new adaptorConversations(getApplicationContext(), IdSMS, SMSDate, MessageList, NumberList, SMSType, SMSStatus, SMSRead);
listconvo.setAdapter(adaptorConversation);
adaptorConversation.notifyDataSetChanged();
listconvo.setOnScrollListener(new listScrollConvo());
}
public void readConversation(){
StringBuilder smsBuilder=新StringBuilder();
对于(int i=0;i<((idsmcount.size()>没有要加载的短信数量)?没有要加载的短信数量:idsmcount.size());i++){
cur=getContentResolver().query(Uri.parse(SMS_Uri_ALL),null,“thread_id=”+strthread+“+”“+”和“+”_id=“+idsmcount.get(i),null,“date DESC”);
开始管理光标(cur);
while(cur.moveToNext()){
字符串smsAdress=cur.getString(
cur.getColumnIndexOrThrow(“地址”).toString();
字符串smstype=cur.getString(
cur.getColumnIndexOrThrow(“类型”)).toString();
如果(smsAdress!=null){
字符串smsbody=cur.getString(
cur.getColumnIndexOrThrow(“body”).toString();
字符串smsid=cur.getString(
cur.getColumnIndexOrThrow(“\u id”).toString();
smsthreadid=cur.getString(
cur.getColumnIndexOrThrow(“线程id”).toString();
字符串smsdate=cur.getString(
cur.getColumnIndexOrThrow(“日期”)).toString();
字符串smsStatus=cur.getString(
cur.getColumnIndexOrThrow(“状态”)).toString();
字符串smsReadUnread=cur.getString(
cur.getColumnIndexOrThrow(“读取”)).toString();
字符串contactnamelist=getContactDisplayNameByNumber(smsAdress);
Log.d(“未经检查的smsReadUnread”,smsReadUnread);
Log.d(“sms id”,str_id);
如果(smsReadUnread.equals(“0”))
{
smsReadUnread=“1”;
ContentValues=新的ContentValues();
值。put(“读取”,true);
Log.d(“sms id”,str_id);
Log.d(“sms已读和未读状态”,smsReadUnread);
getContentResolver().update(Uri.parse(“content://sms/“”,值,“\u id=“+str\u id,null);
Log.d(“smsReadUnread变更”,smsReadUnread);
}
int index=ListConva.getFirstVisiblePosition();
视图v=ListConva.getChildAt(0);
int top=(v==null)?0:v.getTop();
ListConva.setSelectionFromTop(索引,顶部);
如果(!smstype.equals(“3”))
{
添加(顶部,smsid);
添加(顶部,SMSDate);
MessageList.add(顶部,smsbody);
数字列表。添加(顶部,联系人姓名列表);
添加(顶部,SMSType);
添加(顶部,SMSStatus);
SMSRead.add(顶部“1”);
Log.d(“会话id”,smsid);
Log.d(“对话地址”,smsAdress);
Log.d(“对话主体”,smsbody);
日志d(“对话日期”,smsdate);
Log.d(“对话类型”,smstype);
Log.d(“对话状态”,smsStatus);
Log.d(“会话已读(1)-未读(0)”,smsReadUnread;
Log.d(“对话线程id”,smsthreadid);
}
}
计数器++;
Log.e(“计数器”、“计数器值”+计数器);
Log.d(“idsmcount??,”+idsmcount.size());
}
cur.close();
}
Log.d(“IDSMS_对话??”、“+idsmcount.size());
AdapterConversation=新的AdapterConversation(getApplicationContext()、IdSMS、SMSDate、MessageList、NumberList、SMSType、SMSStatus、SMSRead);
ListConva.setAdapter(适配器转换);
AdapterConversation.notifyDataSetChanged();
setOnScrollListener(新的ListScrollConva());
}
这必须像whats up sms“加载更多短信”一样工作。…如果屏幕无法实际显示前10条,但比方说前8条(如果这是一个小屏幕),会发生什么情况?不,这不是问题。通过此功能,前10条短信正在加载,但我想在上传ListView后加载其他短信OK,然后在添加到列表中时,是否可以使所有短信的可见性“消失”,如果检测到
onFling()
或OnScroll()
,则显示所有短信?或者这是不可能的?当我点击阅读按钮来阅读人物对话时,加载所有对话的时间会很长,所以我想先加载10个,然后在滚动加载对话你可以在异步任务中动态地逐个加载它们,这样你可以看到它们一个接一个地出现,当你开始阅读第一个可用的时,列表将被填到底部。我认为这是一个更好的方法。