【发布时间】:2014-12-09 20:01:39
【问题描述】:
我有一个麻烦...
滚动后我需要分页,它可以工作,但随后从新的 url 页面加载新项目,旧项目已删除,但我想在旧项目下方添加新项目而不删除。我正在尝试使用无限适配器,但应用程序已终止。
我找到了work example,但我现在不知道如何添加我的代码there
// code from onCreateView...
new ListViewLoad().execute("1");
// acynctask with loading
private class ListViewLoad extends AsyncTask<String, Void, Void> {
String pNum;
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Loading");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Void doInBackground(String... urls) {
arraylist = new ArrayList<HashMap<String, String>>();
pNum= urls[0];
try {
Document doc = Jsoup.connect("http://url.com?page="+pNum).get();
for (Element table : doc.select("#search_result_container")) {
for (Element row : table.select(".search_result_row")) {
HashMap<String, String> map = new HashMap<String, String>();
Elements app_title = row.select(".search_name");
Elements app_price = row.select(".search_name");
Elements app_released = row.select(".search_released");
Elements app_img = row.select(".search_capsule img[src]");
String app_img_Str = app_img.attr("src");
map.put("rank", app_title.text());
map.put("country", app_price.text());
map.put("population", app_released.text());
map.put("flag", app_img_Str);
arraylist.add(map);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
listview = (ListView) getView().findViewById(R.id.listview);
adapter = new ListViewAdapter(getActivity(), arraylist);
listview.setAdapter(adapter);
listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) { // TODO Auto-generated method stub
int threshold = 1;
int count = listview.getCount();
if (scrollState == SCROLL_STATE_IDLE) {
if (listview.getLastVisiblePosition() >= count
- threshold) {
String pNumNew = String.valueOf(Integer.parseInt(pNum)+1);
Toast.makeText(getActivity().getApplicationContext(), pNumNew, Toast.LENGTH_LONG).show();
new ListViewLoad().execute(pNumNew);
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
});
mProgressDialog.dismiss();
}
}
【问题讨论】:
-
arraylist = new ArrayList<HashMap<String, String>>();是否保存您的数据? -
我找到了work example,但我现在不知道如何添加我的代码there
-
试试这个,把
arraylist = new ArrayList<HashMap<String, String>>();--->改成--->if(arraylist == null) {arraylist = new ArrayList<HashMap<String, String>>();} -
天哪,这行得通!这很容易...添加您的评论作为答案请...
标签: android parsing listview android-asynctask jsoup