0

我有一個實現LoaderManager.LoaderCallbacks遊標類的活動。 我有從SQlite獲取數據的這個功能。從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"); 
} 

我有一個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 
    ); 

這是功能性和獲取數據,但我想要得到的光標這樣我就可以獲取所有信息,並存儲到用於執行後的名單。我搜索所有相關鏈接獲取光標,並找到一個代碼是:

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()); 
    }    

但它得到空遊標。我想獲取這些數據併爲進一步操作製作自定義適配器。請幫助我找到解決方案或任何其他方式從SQlite獲取數據並將其存儲爲List,在獲取後我可以使用它並可以在RecyclerView中設置它。提前致謝。

+0

你不需要任何自定義適配器步驟,只是用'SimpleCursorAdapter',如果你想顯示的'RecyclerView'使用[這](HTTPS數據://依據。 github.com/Shywim/127f207e7248fe48400b)適配器代替 – pskink

+0

CursorRecyclerAdapter(遊標遊標)我必須在此函數中傳遞遊標,但遊標將從哪裏獲取? – Awais

+0

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

回答

0

我認爲這是一箇舊帖子,但我認爲它可以幫助某人。可以實現他onloadFinshed方法

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(); 
     } 
    } 


}