向上滚动listview后,在android中添加更多项目

向上滚动listview后,在android中添加更多项目,android,smsmanager,Android,Smsmanager,我想在活动打开时显示前10条短信,然后在向上滚动后在listview中显示上面的短信 就像下面的链接一样,我可以通过向下滚动并在onscroll上加载项目来显示列表 但我想在顶部加载短信,所以我创建了一个函数来显示前10条短信,但在onscroll之后,我如何才能加载其他短信 public void readConversation() { StringBuilder smsBuilder = new StringBuilder(); for(int i=0

我想在活动打开时显示前10条短信,然后在向上滚动后在listview中显示上面的短信 就像下面的链接一样,我可以通过向下滚动并在onscroll上加载项目来显示列表

但我想在顶部加载短信,所以我创建了一个函数来显示前10条短信,但在onscroll之后,我如何才能加载其他短信

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个,然后在滚动加载对话你可以在异步任务中动态地逐个加载它们,这样你可以看到它们一个接一个地出现,当你开始阅读第一个可用的时,列表将被填到底部。我认为这是一个更好的方法。