2016-03-07 68 views
-1

嗨我想從SQLite數據庫獲取數據並將其添加到列表視圖中,但我沒有以下工作。我不確定數據是否正確添加到陣列中。我有一個稱爲ViewAll的函數,它在onCreate中調用。如何從字符串數組創建列表視圖

我有這樣的一個名爲datahelper

public Cursor getAllData(){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("select * from " +TABLE_NAME, null); 
    return res; 


} 

類,然後這是應該到ListView

public void ViewAll() { 
    Cursor res = myDb.getAllData(); 
    String[] data; 
    if (res != null) { 
     while (res.moveToNext()) { 
      data = new String[10]; 
      data[0] = String.valueOf(res.getInt(0)); 
      data[1] = res.getString(1); 
      data[2] = res.getString(2); 
      data[3] = String.valueOf(res.getInt(3)); 
      data[4] = String.valueOf(res.getFloat(4)); 
      data[5] = String.valueOf(res.getFloat(5)); 
      data[6] = String.valueOf(res.getInt(6)); 
      data[7] = String.valueOf(res.getInt(7)); 
      data[8] = String.valueOf(res.getInt(8)); 
      data[9] = String.valueOf(res.getInt(9)); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.display_data_layout, data); 

      ListView list = (ListView) findViewById(R.id.displayview); 
      list.setAdapter(adapter); 

     } 

    } 
} 
+0

應登錄您的數組的大小,或者只是使用制動點。 –

+0

我不確定我會怎麼做,請你給我舉個例子。 –

+0

非常好[Vogella教程](http://www.vogella.com/tutorials/AndroidListView/article.html) –

回答

0

你需要返工您的代碼中顯示的數據下面的類內。您一次只讀一個條目,創建一個適配器,併爲該條目設置適配器。然後閱讀下一個條目,創建一個新的適配器(放棄較早的適配器)並設置該適配器。實際上,只使用表格中的最後一行。

你最好重新開始,看看如何從光標填充列表視圖here

+0

感謝您的鏈接我只是看着雖然現在我也收到以下錯誤'嘗試調用虛擬方法'無效的android.widget.ListView.setAdapter(android.widget.ListAdapter)'空對象引用'是這個問題有關它是循環雖然和Overiding前面的數組還是別的東西? –

+0

這意味着您的listView的findViewById返回null。確保從XML中使用正確的ID作爲你的列表視圖。 – Francesc

+0

謝謝你是這個問題,我已經在你提到的鏈接上重寫了我的代碼,但是如果我更新這個問題或者重寫一個新的問題,我會得到另一個錯誤? –

0

你必須這樣做 ListView mylistview; ArrayAdapter listAdapter;

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mylistview = (ListView) findViewById(R.id.listView1); 

    final String[] items = { "White", "Black", "Red", "Green", "Yellow", 
      "Blue", "Pink" }; 
    // String[] items = new String[]{ "White", "Black", "Red", "Green", 
    // "Yellow" ,"Blue","Pink"}; 

    listAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, items); 
    mylistview.setAdapter(listAdapter); 

    // For ListItem Click 
    mylistview.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 
      String s = items[position].toString(); 
      Toast.makeText(Main.this, "Selected Color is " + s, 3000).show(); 
     } 
    }); 
} 

}