Ich habe eine App, die Artikel von einem sql database
auf meinem Handy lädt, was ich tue ich lade die Artikel von der onResume()
Methode, aber Dinge nicht seine effizienteste Art zu sehen, kann ich immer sehen die Gegenstände laden, während ich andere Anwendungen wie whatsApp
oder contacts
App sehe, kann man nicht einmal die Gegenstände sehen, die geladen werden. Mit meiner derzeitigen Art zu laden ist meine App nicht nur langsam, sondern macht auch unnötige Verarbeitung, gibt es einen besseren, effizienteren Weg, den jeder kennt, den ich implementieren kann? Vielen Dank im Voraus.Lade Recycler/Listview Artikel effizient
Überblick über meine SQL-Datenbank-Klasse:
public class Database extends SQLiteOpenHelper {
//My list that holds my database items(which in my case is receipts)
private ArrayList<Receipt> allReceipts = new ArrayList<>();
public ArrayList<Receipt> getAllReceipts() {
try {
allReceipts.clear();
// Select All Query
String selectQuery = "SELECT * FROM " + Constants.RECEIPT_TABLE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if(cursor != null)
if (cursor.moveToFirst()) {
do {
Receipt receipt = new Receipt();
receipt.setId(Integer.parseInt(cursor.getString(0)));
receipt.setMerchantName(cursor.getString(1));
receipt.setPrice(cursor.getString(2));
// Adding contact to list
allReceipts.add(receipt);
} while (cursor.moveToNext());
}
if(cursor != null)
cursor.close();
db.close();
return allReceipts;
} catch (Exception e) {
// TODO: handle exception
Log.e("all_receipts", "" + e);
}
return allReceipts;
}
Mein Fragment Empfang der Quittungen
private void initRecycler()
{
Action<List<ParentListItem>> action = new Action<List<ParentListItem>>() {
@NonNull
@Override
public String id() {
// Return a unique ID.
return "load all receipts";
}
@Nullable
@Override
protected List<ParentListItem> run() throws InterruptedException {
receiptArrayList = database.getAllReceipts();
return getReceipts();
}
@Override
protected void done(@Nullable final List<ParentListItem> receipts) {
progress.stop();
assert receipts != null;
if(receipts.isEmpty()) {
}else {
childAdapterListeners();
adapter = new ReceiptExpandableAdapter(getContext(), receipts, onItemClickListenerCheckBtn, onItemClickListenerDeleteBtn, mOntemClickListenerViewBtn);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
// recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
recyclerView.setAdapter(adapter);
}
}
};
action.execute();
}
@Override
public void onResume()
{
initRecycler();
super.onResume();
}
Es ist wirklich eine breite Frage, viele Faktoren gibt es? Kannst du den Code posten? – varunkr
in einem Moment bitte – Chrometobia
versuchen, eine begrenzte Anzahl von Datensätzen (Seiten) zu holen. Rufen Sie die nächsten vorherigen Seiten nur dann ab, wenn der Benutzer zu ihnen blättert. –