大家好 我需要在listview中填充数据库元素。我得到空指针异常和数组适配器错误。我做了以下几种方式: 1)创建一个大小为行数的字符串数组2)在数组中存储数据库值3)在listview中合并。我试了很久但我找不到它。 编码:
Cursor c = db.rawQuery("select * from stopwatch" , null);
if (c != null ) {
if (c.moveToFirst()) {
do {
counter=counter+1; // finding no of rows in table.
}while (c.moveToNext());
}
}
array=new String[counter];
counter1=0;
Cursor c1 = db.rawQuery("select * from stopwatch" , null);
if (c1 != null ) {
if (c1.moveToFirst()) {
do {
array[counter1]=String.valueOf(c1.getInt(0))+":"+String.valueOf(c1.getInt(1))+":"+String.valueOf(c1.getInt(2));
计数器=计数+ 1; } while(c1.moveToNext()); } } db.close();
// populating in listview as follows
list1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array));
我的logcat:
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): java.lang.NullPointerException
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:351)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.AbsListView.obtainView(AbsListView.java:1254)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.ListView.measureHeightOfChildren(ListView.java:1142)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.ListView.onMeasure(ListView.java:1055)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.View.measure(View.java:7117)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2929)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:619)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.LinearLayout.onMeasure(LinearLayout.java:280)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.View.measure(View.java:7117)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2929)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.View.measure(View.java:7117)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.View.measure(View.java:7117)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2929)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.View.measure(View.java:7117)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.ViewRoot.performTraversals(ViewRoot.java:713)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.view.ViewRoot.handleMessage(ViewRoot.java:1504)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.os.Looper.loop(Looper.java:123)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at android.app.ActivityThread.main(ActivityThread.java:3948)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at java.lang.reflect.Method.invokeNative(Native Method)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at java.lang.reflect.Method.invoke(Method.java:521)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
05-12 18:52:30.853: ERROR/AndroidRuntime(8330): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
答案 1 :(得分:0)
尝试使用SQLiteOpenHelper 创建数据帮助
实现这样的功能:
public List<List<String>> getData(){
Cursor cursor = this.db.query(TABLE_NAME,new String[] { "value1", "value2" }, null, null, null, null, "code asc");
List<List<String>> list = new ArrayList<List<String>>();
if (cursor.moveToFirst()){
do{
List<String> temp = new ArrayList<String>();
temp.add(cursor.getString(0));
temp.add(cursor.getString(1));
list.add(temp);
}while (cursor.moveToNext());
}
return list;
}
然后在另一个班级电话中:
private List<List<String>> liItems;
liItems = dh.getData();
/** create an array in the proper length */
String[] rgItems = new String[liItems.size()];
/** Fill the array with data */
for (int i=0; i < liItems.size(); i++){
List<String> temp = liItems.get(i);
rgItems[i] = temp.get(0) + " - " + temp.get(1);
}
/** Populate ListView with list */
ArrayList<String> customerList = new ArrayList<String>();
customerList.addAll( Arrays.asList(rgItems) );
adItemAdapter = new ArrayAdapter<String>(this, R.layout.itemlisttext, rgItems);
lvItemListview.setAdapter(adItemAdapter);
itemlisttext是带有textview的xmlLayout
这对我来说很好,希望它可以帮助你。