如何在ListView末尾添加“更多”按钮以加载更多项目?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ListView末尾添加“更多”按钮以加载更多项目?相关的知识,希望对你有一定的参考价值。
我有一个ListView,其中首先要加载14个项目,并在前14个项目列表的末尾创建一个“更多”链接,当按“更多”时我必须加载更多14个项目等等。怎么可以我在ListView的末尾添加了一个按钮或链接,只有在滚动到ListView的底部后才能看到..在某处有可用的教程或请建议我出路
答案
我会使用类似下面的代码:
// Create the Load More... button
Button btnLoadExtra = new Button(this);
btnLoadExtra.setText("Load More...");
// Adding Load More button to lisview at bottom
lv.addFooterView(btnLoadExtra);
btnLoadExtra.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// Starting a new async task
new loadMoreListView().execute();
}
});
然后,您需要创建一个新类,该类创建Async任务以加载其他数据:
private class loadMoreListView extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
// Showing progress dialog before sending http request
pDialog = new ProgressDialog(
androidListViewWithLoadMoreButtonActivity.this);
pDialog.setMessage("Please wait..");
pDialog.setIndeterminate(true);
pDialog.setCancelable(false);
pDialog.show();
}
protected Void doInBackground(Void... unused) {
runOnUiThread(new Runnable() {
public void run() {
// increment current page
current_page += 1;
// Next page request
URL = //enter the url for the extra data here.
xml = parser.getXmlFromUrl(URL); // getting XML
doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
// adding HashList to ArrayList
menuItems.add(map);
}
// get listview current position - used to maintain scroll position
int currentPosition = lv.getFirstVisiblePosition();
// Appending new data to menuItems ArrayList
adapter = new ListViewAdapter(
AndroidListViewWithLoadMoreButtonActivity.this,
menuItems);
lv.setAdapter(adapter);
// Setting new scroll position
lv.setSelectionFromTop(currentPosition + 1, 0);
}
});
return (null);
}
protected void onPostExecute(Void unused) {
// closing progress dialog
pDialog.dismiss();
}
}
希望这可以帮助 :)
另一答案
您可以假装在getCount()
方法中总是有一个项目,然后处理最后一个ListView项目的单击。
以上是关于如何在ListView末尾添加“更多”按钮以加载更多项目?的主要内容,如果未能解决你的问题,请参考以下文章