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条消息并将其设置为适配器。