G
gmanuell
Neues Mitglied
- 0
Hallo Forum,
allssooo, folgende Herrausforderung:
ich habe eine Klasse die von ListActivity erbt.
in der onCreate methode passiert folgendes:
dabei stellt count den ersten parameter in der SQLite LIMIT Anweisung.
also: ...LIMIT 0,10;
hole also die ersten 10Einträge.
soo, der
PhotoStandardList macht nix anderes als von BaseAdapter zu erben und die passenden methoden zu überschreiben.
spannend ist sicherer LoadUserPhotoList
die methode
getPhotosForUserList holt dann halt passend die Daten aus der SQLite und packt die in die Map.
Bis dahin funktioniert alles super.
Jetzt würde ich gerne in der Klasse die von ListActivity erbt noch das OnScrollListener Interface implementieren.
Damit ich am Anfang nur z.b. 10Listen Einträge hole und wenn der Benutzer ganz unten in der Liste ist automatisch die nächsten 10 geholt werden.
jetzt dachte ich eigentlich ich könnte in
einfach:
machen und mir werden die nächsten 10 Einträge geladen.
Der AsyncTask sagt dem Adapter ja: notifyDataSetChanged();
aber, in der onScroll(...) Methode bleibt der totalItemCount immer gleich.
Leider habe ich keine Idee woran es liegt,
habe zwar schon gesucht aber bin zu keiner vernünftigen Lösung gekommen.
Zumal es ja auch schön wäre in der Zeit wo die neuen Items geladem werden unter dem letzten Listeneintrag ein "Lade weitere Einträge" zu haben.
Ich hoffe das mir wer Helfen kann.
Bin auch für alternative offen, also es muss nicht der OnScrollListener sein, aber es sollte schon Async passieren
Danke.
allssooo, folgende Herrausforderung:
ich habe eine Klasse die von ListActivity erbt.
in der onCreate methode passiert folgendes:
Code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_photo_list);
adapter = new PhotoStandardList(this);
setListAdapter(adapter);
listId = getIntent().getIntExtra("listId", -2);
pd = ProgressDialog.show(this, "Working..", "Lade Photos", true,
false);
count = 0;
new LoadUserPhotoList(listId, count).execute();
}
also: ...LIMIT 0,10;
hole also die ersten 10Einträge.
soo, der
PhotoStandardList macht nix anderes als von BaseAdapter zu erben und die passenden methoden zu überschreiben.
spannend ist sicherer LoadUserPhotoList
Code:
private class LoadUserPhotoList extends AsyncTask<Void, Void, Void> {
private ArrayList<HashMap<String, String>> mMap;
private int listId;
private int count;
public LoadUserPhotoList(int listId, int count) {
super();
this.listId = listId;
this.count = count;
}
@Override
protected Void doInBackground(Void... arg0) {
PhotoUtils utils = new PhotoUtils();
mMap = utils.getPhotosForUserList(getApplicationContext(), listId, count);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
adapter.setNewItems(mMap);
adapter.notifyDataSetChanged();
pd.dismiss();
}
}
getPhotosForUserList holt dann halt passend die Daten aus der SQLite und packt die in die Map.
Bis dahin funktioniert alles super.
Jetzt würde ich gerne in der Klasse die von ListActivity erbt noch das OnScrollListener Interface implementieren.
Damit ich am Anfang nur z.b. 10Listen Einträge hole und wenn der Benutzer ganz unten in der Liste ist automatisch die nächsten 10 geholt werden.
jetzt dachte ich eigentlich ich könnte in
Code:
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
Code:
boolean loadNew = firstVisibleItem + visibleItemCount >= totalItemCount;
if(loadNew) {
count = count + 10;
new LoadUserPhotoList(listId, count).execute();
}
Der AsyncTask sagt dem Adapter ja: notifyDataSetChanged();
aber, in der onScroll(...) Methode bleibt der totalItemCount immer gleich.
Leider habe ich keine Idee woran es liegt,
habe zwar schon gesucht aber bin zu keiner vernünftigen Lösung gekommen.
Zumal es ja auch schön wäre in der Zeit wo die neuen Items geladem werden unter dem letzten Listeneintrag ein "Lade weitere Einträge" zu haben.
Ich hoffe das mir wer Helfen kann.
Bin auch für alternative offen, also es muss nicht der OnScrollListener sein, aber es sollte schon Async passieren
Danke.