2012-01-17 2 views
3

CursorLoader 모델을 사용하여 필요한 데이터에 커서를 사용하여 액세스하는 방법에 대해 약간 혼란 스럽습니다. SimpleCursorAdapter를 사용하여 다음과 같이 구현해야하는 onLoadFinished 메서드 내에서 어댑터의 swapCursor 메서드에 커서를 전달할 수있었습니다.커서 로더를 사용하여 검색된 데이터에 액세스하는 방법?

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

    facilityAdapter.swapCursor(cursor); 

} 

이제 데이터베이스를 쿼리해야하며 반환되는 행 수에 따라 정수를 표시해야합니다. 이 정보에 어떻게 액세스합니까? ID를 다른 데이터베이스 테이블의 외래 키로 사용해야하기 때문에 선택된 행의 일부 (_id)를 묶어서 다음 액티비티에 전달할 수 있도록 일부 정보를 저장하려고합니다. 데이터베이스를 조회합니다. 안드로이드 개발자 사이트에서 cursor.getInt, cursor.getString 등 커서 클래스에 accesor 메서드가 있다는 것을 보았습니다. 이러한 데이터를 사용하여 내가 사용한 데이터에 액세스해야합니다.

답변

4

여기에 두 가지 질문이있는 것 같습니다. 둘 다 답변 드리겠습니다.

Cursor cur = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); 
int numColumns = cur.getCount(); 
cur.close(); 
  • 선택한 항목의 ID를 가져 오는 다음과 같이 내가 질문을 잘못 이해하는 경우

    1. 테이블의 행 수를 얻으려면 ... 저를 수정, 당신은 간단한 쿼리를 수행 실제로 안드로이드 어댑터 덕분에 매우 간단합니다. 다음은 ListView 항목을 클릭 할 때와 같이 다른 활동으로 ID를 전달하는 방법을 간략하게 설명한 예입니다.

      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_URIContentProvider에 해당하는 CONTENT_URI입니다

      Uri uri = Uri.withAppendedPath(CONTENT_URI, String.valueOf(id)); 
      

      .

    도움이 될지 알려주세요.

  • +0

    감사합니다. android dev 사이트에는 현재 표준으로 데이터에 액세스하고 싶었던 사용되지 않는 예제가 많이 있습니다. – bgrantdev

    +0

    @Alex : - 선생님. 나는 서비스로 연장되는 수업을 가지고 있습니다. 이제 모바일받은 편지함에서 메시지에 액세스하면 커서를 관리하지 않고 다시 한 메시지를주고()이 메시지를 이해할 수 없습니다. 어떻게해야합니까? –

    +0

    @DeepankerChaudhary StackOverflow에 대한 질문을하고 링크를 복사하여 붙여 넣으면 답변을 얻을 수 있습니다. :) –

    관련 문제