Автоматическая подгрузка данных в ListView
Всем привет.
Помогите, пожалуйста, долблюсь уже не один день...
Есть приложение, которое парсит JSON выводит все это дело в ListView. Используется GET запросы.
Нужно сделать следующее: при скроллинге вниз, доходя до конца списка, подгружались новые данные, а старые оставались. При каждой подгрузке будет использоваться запрос с разными параметрами. Так как я новичок, пожалуйста, прошу примеры давать)))
Заранее большое спасибо.
Даю код:
public class Test extends TabGroupActivity {
private ProgressDialog pDialog;
private static final String TAG_HREF="href";
ListView list;
HListAdapters adapter;
ArrayList<homelist> homelist;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.index);
list = (ListView)findViewById(R.id.list);
homelist = new ArrayList<homelist>();
new ListAsynTask().execute("http://xxx.com/utf/auto.json? type=testdriveslist&offset");
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String href = ((TextView) view.findViewById(R.id.href)).getText().toString();
Intent in = new Intent(getApplicationContext(), webviews.class);
in.putExtra(TAG_HREF, href);
startActivity(in);
}
});
}
@Override
public void onScroll(AbsListView lw, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
public class ListAsynTask extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Test.this);
pDialog.setMessage("Идет загрузка ... Ждемс...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Boolean doInBackground(String... params){
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(params[0]);
HttpResponse response = client.execute(get);
int status = response.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity, "utf-8");
JSONArray jsonarr = new JSONArray(data);
for (int i=0; i<jsonarr.length();i++){
homelist hmlist = new homelist();
JSONObject c = jsonarr.getJSONObject(i);
hmlist.setTitle(c.getString("title"));
hmlist.setPictures(c.getString("picture"));
hmlist.setHref(c.getString("href"));
hmlist.setDate(c.getString("date"));
homelist.add(hmlist);
}
return true;
}
}catch (ClientProtocolException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if(result == false){
}else {
if (pDialog.isShowing())
pDialog.dismiss();
adapter = new HListAdapters(getApplicationContext(), R.layout.list_item, homelist);
list.setAdapter(adapter);
}
}
}
}
Источник: Stack Overflow на русском