Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Listview中实现LoadMore按钮_Android_Listview_Button - Fatal编程技术网

Android 在Listview中实现LoadMore按钮

Android 在Listview中实现LoadMore按钮,android,listview,button,Android,Listview,Button,这是一个很常见的问题,但我仍然无法实现它。在我的应用程序中,我获取收件箱消息,并将它们显示在列表视图中。代码运行正常,但在启动时它会将所有邮件从收件箱加载到listview。但我希望当应用程序启动时,它只加载前15条消息,然后会显示一个带有标签的按钮LoadMore,单击“下一步”按钮时,15条消息将添加到listview。以下是我的代码片段: listViewSMS=(ListView)findViewById(R.id.lvSMS); listViewSMS.setAdapter(smsL

这是一个很常见的问题,但我仍然无法实现它。在我的应用程序中,我获取
收件箱消息
,并将它们显示在
列表视图
中。代码运行正常,但在启动时它会将所有邮件从收件箱加载到listview。但我希望当应用程序启动时,它只加载
前15条消息
,然后会显示一个带有标签的按钮
LoadMore
,单击“下一步”按钮时,15条消息将添加到listview。以下是我的代码片段:

listViewSMS=(ListView)findViewById(R.id.lvSMS); 
listViewSMS.setAdapter(smsListAdapter);
getInboxSms();
smsListAdapter = new SMSListAdapter(this,populateSMSList());
    listViewSMS.setAdapter(smsListAdapter);

public void getInboxSms() {
    ContentResolver cr = getContentResolver();
    c = cr.query(Uri.parse("content://sms/inbox"), null, null, null, null);
    totalSMS = c.getCount();
    if (c.moveToFirst()) {
        for (int i = 0; i < totalSMS; i++) {
            Log.d("SMSss", "Contact number : "+ c.getString(c.getColumnIndexOrThrow("address"))+ "\n"
                            + "msg : " + c.getColumnIndexOrThrow("body")
                            + "\n"+ "Person : "
                            + getContactName(c.getString(c.getColumnIndexOrThrow("address"))));
            c.moveToNext();
        }
    }
}

private List<SMSListModel> populateSMSList() 
{
    if(c.getCount()>0)
    {
        for(int i=0;i<c.getCount();i++)
        {
            if(c.moveToPosition(i))
            {

                if(getContactName(c.getString(c.getColumnIndex("address"))) == null )
                {
                    list.add(new SMSListModel(c.getString(c.getColumnIndex("address")),c.getString(c.getColumnIndex("body"))));

                }
                }
        }
    }
    return list;        
}
listViewSMS=(ListView)findViewById(R.id.lvSMS);
setAdapter(smsListAdapter);
getInboxSms();
smsListAdapter=新的smsListAdapter(这是populateSMSList());
setAdapter(smsListAdapter);
public void getInboxSms(){
ContentResolver cr=getContentResolver();
c=cr.query(Uri.parse(“content://sms/inbox)、空、空、空、空);
totalSMS=c.getCount();
if(c.moveToFirst()){
对于(int i=0;i0)
{

对于(inti=0;i您可以使用适配器(请参阅)。首先,创建一个包含15条第一条消息的列表,并在您的适配器中设置use,然后设置use setAdapter()在ListView对象上。当用户单击按钮时,您只需创建一个包含更多元素的新列表,然后创建一个新适配器,并将其设置为ListView。

您可以使用简单教程,该教程一步一步地描述您的目标。

您可以使用ListView.setOnScrollListener

ListView.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // checking up n down

                    }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {

            flag_end_show = false;
            if(firstVisibleItem+visibleItemCount == totalItemCount && totalItemCount!=0)
            {
                flag_end_show = true;
                if(flag_loading == false)
                {
                    flag_loading = true;

                        new LoadMoreAsync().execute();
                }
            }

        }
    });

你的代码有什么问题吗?我想你可以使用
setFooter
作为你的listView,另一种方法是处理
getView
方法,第一个建议见此()@Jeremy D代码工作正常…我只想使用
loadmore
按钮listview@shayanpourvatan谢谢,我已经尝试实现了
setFooter
,但我是android新手,我不知道该写什么代码。你能帮我写代码吗?看我发布的链接,完整的答案就在那里我想你不明白我的意思,他/她想在
listView
之后添加更多按钮,如果您锁定了codeonStartup,则适配器存在启动它是否加载所有收件箱消息以及什么是
new LoadMoreAync()。执行()
.Thanks除了调用一个函数获取更多数据外,什么都不用做……您必须使用分页,即首先加载20-30条消息,如果用户滚动到列表底部,则必须获取下一条20-30条消息并将其设置为适配器。