2016-03-07 53 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(); 
     } 
    }); 
} 

}