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


}