2012-04-24 27 views
2

我想填充一個列表視圖使用我保存在我的資產的數據庫。我已經得到儘可能檢查數據庫是否正在創建時,我運行應用程序(它是)。我目前的問題是想弄清楚如何獲取列並將它們顯示在列表視圖中。我的專欄是名稱,職位和部門,以防您看到一段您不明白的代碼。我一直試圖使用http://saigeethamn.blogspot.com/2011/02/listview-of-data-from-sqlitedatabase.html 的代碼,如果有人能夠幫助我,我會非常感激,謝謝您在高級。閱讀數據庫到應用程序/在列表視圖中顯示

編輯:當代碼運行時,它給了我一個空指針異常

public class Favorites extends ListActivity { 
     public static String tableName = "fac"; 
     private ListView lv; 
     SQLiteDatabase newDB; 
     private ArrayList<String> results = new ArrayList<String>(); 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.favorites); 

      openAndQueryDatabase(); 
      displayResultList(); 
     } 

     private void displayResultList() { 
      TextView tView = new TextView(this); 
      tView.setText("This data is retrieved from the database and only 4 " 
        + "of the results are displayed"); 
      getListView().addHeaderView(tView); 

      setListAdapter(new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, results)); 
      getListView().setTextFilterEnabled(true); 

     } 

     private void openAndQueryDatabase() { 
      try { 
       DataBaseHelper dbHelper = new DataBaseHelper(
         this.getApplicationContext()); 
       newDB = dbHelper.getWritableDatabase(); 
       Cursor c = newDB.rawQuery("SELECT name, position FROM " + tableName 
         + "where ", null); 

       if (c != null) { 
        if (c.moveToFirst()) { 
         do { 
          String name = c.getString(c.getColumnIndex("name")); 
          String position = c.getString(c 
            .getColumnIndex("position")); 
          results.add("name: " + name + ",Position " + position); 
         } while (c.moveToNext()); 
        } 
       } 
      } catch (SQLiteException se) { 
      } finally { 
       if (newDB != null) 
{ 
        newDB.execSQL("DELETE FROM " + tableName); 
       newDB.close(); 
      }} 

     } 
    } 

的logcat:

 04-24 04:43:19.064: E/AndroidRuntime(1644): FATAL EXCEPTION: main 
     04-24 04:43:19.064: E/AndroidRuntime(1644): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cerealBarApps/com.cerealBarApps.Faculty_tab}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cerealBarApps/com.cerealBarApps.Favorites}: java.lang.NullPointerException 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.os.Handler.dispatchMessage(Handler.java:99) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.os.Looper.loop(Looper.java:143) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.main(ActivityThread.java:4196) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at java.lang.reflect.Method.invokeNative(Native Method) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at java.lang.reflect.Method.invoke(Method.java:507) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at dalvik.system.NativeStart.main(Native Method) 
     04-24 04:43:19.064: E/AndroidRuntime(1644): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cerealBarApps/com.cerealBarApps.Favorites}: java.lang.NullPointerException 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1651) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:656) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.widget.TabHost.setCurrentTab(TabHost.java:326) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.widget.TabHost.addTab(TabHost.java:216) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.cerealBarApps.Faculty_tab.onCreate(Faculty_tab.java:55) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  ... 11 more 
     04-24 04:43:19.064: E/AndroidRuntime(1644): Caused by: java.lang.NullPointerException 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.cerealBarApps.Favorites.openAndQueryDatabase(Favorites.java:63) 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.cerealBarApps.Favorites.onCreate(Favorites.java:25) 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 

對不起

+0

你可以發表你的空指針異常痕跡? – vinodn 2012-04-24 08:46:43

+0

如果你需要其他東西讓我知道 – 2012-04-24 08:48:49

+1

你截斷你的日誌完全到我想看到的一個點.. 我想知道com.cerealBarApps.Favorites類的行號,這是導致空指針 – vinodn 2012-04-24 08:55:19

回答

0

試試這個PLZ .. 在下面的statment,請把''之前的'關鍵字'。

Cursor c = newDB.rawQuery("SELECT name, position FROM " + tableName + "where ", null); 

Cursor c = newDB.rawQuery("SELECT name, position FROM " + tableName + " where ", null); 
+0

不是問題仍然存在。 – 2012-04-24 09:15:01

+0

請檢查DBHelper類是否也正常工作。檢查一個人是否在反應SQLiteDatabase實例或不。 – 2012-04-24 09:17:36

+0

所有我的數據庫助手類所做的是在應用程序啓動時在手機上創建數據庫。我的表格已在保存在我的資產中的文件中定義。我所需要做的就是讀取這個文件並在視圖中顯示 – 2012-04-24 09:22:40

相關問題