2014-02-14 2 views
0

Android 애플리케이션에서 문제가 발생했습니다. 내 응용 프로그램에서 특정 열 이름을 얻으려고합니다. 이것은 ListView에서 완벽하게 작동하지만 다른 곳에서는 사용할 수 없습니다. ListView 외부에서 열을 검색 할 수 없습니다.

SimpleCursorAdapter customers = new SimpleCursorAdapter(this,R.layout.foodresult, cursor, from, to); 
     mListView = (ListView) findViewById(R.id.list); 
     mListView.setAdapter(customers); 
     // Define the on-click listener for the list items 

     mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       // Get the cursor, positioned to the corresponding row in the result set 

     cursor = (Cursor) mListView.getItemAtPosition(position); 

       String name = cursor.getString(cursor.getColumnIndexOrThrow("customer")); 
       String caloriescursor = cursor.getString(cursor.getColumnIndexOrThrow("name")); 
       String totalfat = cursor.getString(cursor.getColumnIndexOrThrow("address")); 
       String satfatcursor = cursor.getString(cursor.getColumnIndexOrThrow("city")); 
       String state = cursor.getString(cursor.getColumnIndexOrThrow("state")); 
       String zipCode = cursor.getString(cursor.getColumnIndexOrThrow("zipCode")); 
       String carbo = cursor.getString(cursor.getColumnIndexOrThrow("carb")); 
       String fiber = cursor.getString(cursor.getColumnIndexOrThrow("fiber")); 
       String sugar = cursor.getString(cursor.getColumnIndexOrThrow("sugar")); 
       String protein = cursor.getString(cursor.getColumnIndexOrThrow("protein")); 
       String salt = cursor.getString(cursor.getColumnIndexOrThrow("salt")); 
       String sat_fat = cursor.getString(cursor.getColumnIndexOrThrow("city")); 

그러나 ListView에 외부

, 내가 그렇게 할 수 없어 내 ListView, 나는이 있습니다. 여기 내가 다른 방법으로 한 일이 있습니다.

mDbHelper mDbHelper = new DBAdapter(DatabaseFiller.this); 
        mDbHelper.open(); 
        Cursor c = mDbHelper.returnAllColumns(); 


        String protein = c.getString(c.getColumnIndexOrThrow("protein")); 
        String salt = c.getString(c.getColumnIndexOrThrow("salt")); 
        String sat_fat = c.getString(c.getColumnIndexOrThrow("city")); 

다음은 returnAllColumns() 메소드입니다.

java.lang.IllegalArgumentException: column 'protein' does not exist 
     at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303) 
     at com.example.foodsaver2.DatabaseFiller$1.onClick(DatabaseFiller.java:142) 
     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941) 
     at android.widget.AdapterView.performItemClick(AdapterView.java:299) 
     at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 
     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904) 
     at android.widget.AbsListView$3.run(AbsListView.java:3638) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 

그래서 내가 잘못 뭐하는 거지 :

public Cursor returnAllColumns() { 
    Cursor cursor = mDb.query(FTS_VIRTUAL_TABLE, 
      new String[] {KEY_ROWID, 
        KEY_NAME, 
      KEY_CUSTOMER} 
      , null, null, null, null, null); 
if (cursor != null) { 
    cursor.moveToFirst(); 
} 
return cursor; 
} 

여기 내 로그 캣입니다. SQLite에 대한 사전 경험이 없습니다. 나는 잠시 동안 벽에 머리를 두드렸다. 이 문제와 관련된 도움을 주시면 감사하겠습니다. 쿼리 메소드 호출에

new String[] {KEY_ROWID, KEY_NAME, KEY_CUSTOMER} 

를 사용하여

+0

try cursor.moveToPosition (position), 나에게 다시 피드 –

답변

1

, 당신은 만 열을 돌려 자신을 제한하고 있습니다. 모든 열을 가져 오려면 대신 배열 대신 두 번째 매개 변수로 null을 전달해야합니다.

관련 문제