0

Ich habe eine Aktivität, die LoaderManager.LoaderCallbacks Cursor-Klasse implementiert. Ich habe diese Funktion, die Daten von SQlite erhält.Get Cursor von SimpleCursorAdapter

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    switch (id) { 
     case ITEM_LOADER_ID: 
      // The uri points to Item, which is the items in the inventory 
      Uri uri = InventoryContract.Item.contentUriWithAccount(mCloverAccount); 
      String sortOrder = InventoryContract.Item.NAME; 

      String selection = ""; 

      try { 

       selection = InventoryContract.ItemColumns.CODE; 

      catch (Exception e){ 
       Log.e("Error",e.toString()); 
      } 
      return new CursorLoader(HomeActivity.this, uri, null, selection, null, sortOrder); 
     default: 
      // An invalid id was passed in 
    } 
    throw new IllegalArgumentException("Unknown Loader ID"); 
} 

Ich habe ein SimpleCursorAdapter

SimpleCursorAdapter adapter = new SimpleCursorAdapter(
      this, 
      android.R.layout.simple_list_item_2, 
      null, 
      new String[]{InventoryContract.Item.NAME, InventoryContract.Item.PRICE_TYPE}, 
      new int[]{android.R.id.text1, android.R.id.text2}, 
      0 
    ); 

Dies ist funktional und die Daten bekommen, aber ich mag die Cursor bekommen, damit ich alle Informationen und speichere in Liste für die Zeit nach Ausführung abrufen kann. Ich suche alle zugehörigen Links für den Cursor bekommen und einen Code gefunden, die ist:

Cursor c = adapter.getCursor(); 
    try { 

     int i = 0; 
     while (c.moveToNext()){ 
      Log.e("In Log Cursor",c.getString(i)); 
      i++; 
     } 
     c.close(); 
    } 
    catch (Exception e){ 
     Log.e("Error",e.toString()); 
    }    

aber es wird immer null Cursor. Ich möchte diese Daten erhalten und einen benutzerdefinierten Adapter für die weitere Bearbeitung erstellen. Bitte helfen Sie mir, die Lösung oder eine andere Möglichkeit zu finden, diese Daten von SQlite zu erhalten und als Liste zu speichern, mit der ich sie nach dem Abrufen verwenden und in RecyclerView einstellen kann. Danke im Voraus.

+0

Sie alle benutzerdefinierten Adapter nicht brauchen die Schritte in onloadFinshed Verfahren implementieren, verwenden 'SimpleCursorAdapter' einfach, und wenn Sie möchten, dass Ihre Daten auf den' RecyclerView' verwenden [diese] (https zeigen: // Kern. github.com/Shywim/127f207e7248fe48400b) Adapter – pskink

+0

CursorRecyclerAdapter (Cursor Cursor) Ich muss den Cursor in dieser Funktion übergeben, aber woher kommt dieser Cursor? – Awais

+0

siehe http://www.grokkingandroid.com/using-loaders-in-android/#how_to_deal_with_cursoradapters – pskink

Antwort

0

Ich denke, es ist ein alter Post, aber ich dachte, es kann jemandem helfen. Sie kann er

public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    adapter.swapCursor(data); 
     /* 
     data.moveToFirst(); 

    if (data.getCount() != 0) { 
     for (int i = 0; i < data.getCount(); i++) { 
      String s = data.getString(data.getColumnIndex(column no)); 
      data.moveToNext(); 
     } 
    } 


}