2012-01-17 9 views
3

私は、CursorLoaderモデルを使用して必要なデータにカーソルを使用してアクセスする方法について少し混乱します。 SimpleCursorAdapterを使用して、onLoadFinishedメソッド内でアダプタのswapCursorメソッドにカーソルを渡すことができました。これは、次のように実装する必要があります。取得したデータにカーソルローダーを使用するには?

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { 

    facilityAdapter.swapCursor(cursor); 

} 

ここでデータベースを照会する必要があり、返される行数に基づいて整数が表示されます。この情報にはどうすればアクセスできますか?あるID番号が他のデータベーステーブルの外部キーであるため、私はそれをバンドルして次のアクティビティに渡すことができるように、選択した特定の行(_id)を保存したい情報があります。データベースに照会します。アンドロイドのデベロッパーサイトでは、cursor.getInt、cursor.getStringなどのカーソルクラスへのアクセサメソッドがあることがわかりました。これらのメソッドを使用して、後のデータにアクセスする必要があります。

答えて

4

ここに2つの質問があるようです...私はそれらの両方に回答します。

Cursor cur = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); 
int numColumns = cur.getCount(); 
cur.close(); 
  • 選択した項目のIDを取得:私は、テーブルの行数を取得するには...

    1. をあなたの質問を誤解している場合、次のように、あなたは単純なクエリを実行する私を修正実際には、Androidアダプタのおかげで非常に簡単です。以下は、IDを別のアクティビティに渡す方法の概要を示す例です(たとえば、ListViewアイテムがクリックされたときなど)。

      public class SampleActivity extends Activity implements 
           LoaderManager.LoaderCallbacks<Cursor> { 
      
          // pass this String to the Intent in onListItemClicked() 
          public static final String ID_TAG = "id_tag"; 
      
          private SimpleCursorAdapter mAdapter; 
      
          @Override 
          public void onCreate(Bundle savedInstanceState) { 
           super.onCreate(savedInstanceState); 
      
           /* setup layout, initialize the Loader and the adapter, etc. */ 
      
           setListAdapter(mAdapter); 
          } 
      
          @Override 
          public void onListItemClick(ListView l, View v, int position, long id) { 
           final Intent i = new Intent(getApplicationContext(), NewActivity.class); 
           i.putExtra(ID_TAG, id); 
           // pass the id to NewActivity. You can retrieve this information in 
           // the Activity's onCreate() method with something like: 
           // long id = getIntent().getLongExtra(SampleActivity.ID_TAG, -1); 
           startActivity(i); 
          } 
      } 
      

      あなた自身でURIを作成して外部データベースに照会する必要があります。

      CONTENT_URIがあなたのContentProviderに適しCONTENT_URIある
      Uri uri = Uri.withAppendedPath(CONTENT_URI, String.valueOf(id)); 
      

      :これは、のようなもので行うことができます。

    これが役立つ場合はお知らせください。

  • +0

    非常に参考になりました。アンドロイドのデベロッパーサイトには、現在の標準でデータにアクセスしていることを確認したかった廃止された例がたくさんあります。 – bgrantdev

    +0

    @Alex: - 私は奉仕によって広がる授業を持っています。今私は携帯電話の受信トレイからメッセージにアクセスすると、カーソルを管理し始めることなく、もう一度&1つのメッセージを出します。私は理解できません。どうすればいいですか教えてください。 –

    +0

    @DeepankerChaudhary StackOverflowに関する質問をして、リンクをコピーして貼り付けると、私はそれに答えることができます。 :) –

    関連する問題