Java 如何在listview android中显示数据库信息?获取错误空指针异常
以下是从databaseadapter类中的函数获取所有类别的代码:Java 如何在listview android中显示数据库信息?获取错误空指针异常,java,android,sqlite,Java,Android,Sqlite,以下是从databaseadapter类中的函数获取所有类别的代码: public List<CategoryClass> getAllCategory() { List<CategoryClass> getCategoryList = new ArrayList<CategoryClass>(); dataAdapter = dataAdapter.openToWrite(); Cursor curso
public List<CategoryClass> getAllCategory()
{
List<CategoryClass> getCategoryList = new ArrayList<CategoryClass>();
dataAdapter = dataAdapter.openToWrite();
Cursor cursor = db.rawQuery("SELECT * FROM " + tb_Name,null);
if (cursor.moveToFirst()) {
do {
CategoryClass categoryInstance = new CategoryClass();
categoryInstance.setCategory(cursor.getString(1));
// Adding contact to list
getCategoryList.add(categoryInstance);
cursor.close();
}
while (cursor.moveToNext());
}
Log.d("retrieving all categories","count < 0");
return getCategoryList;
}
请发布您的logcat错误。。。我认为你们不需要foreach循环,你们可以直接把列表传递给适配器
DatabaseAdapter dataAdapterInstance;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.categories_list);
ListView list = (ListView) findViewById(R.id.listView);
dataAdapterInstance = new DatabaseAdapter(this);
dataAdapterInstance = dataAdapterInstance.openToWrite();
List<CategoryClass> category = dataAdapterInstance.getAllCategory();
ArrayAdapter<CategoryClass> arrayAdapter = new ArrayAdapter<CategoryClass>(this,android.R.layout.simple_list_item_1,category);
arrayAdapter.notifyDataSetChanged();
list.setAdapter(arrayAdapter);}
数据库适配器dataAdapterInstance;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.categories\u列表);
ListView列表=(ListView)findViewById(R.id.ListView);
dataAdapterInstance=新数据库适配器(此);
dataAdapterInstance=dataAdapterInstance.openToWrite();
列表类别=dataAdapterInstance.getAllCategory();
ArrayAdapter ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,category);
arrayAdapter.notifyDataSetChanged();
list.setAdapter(arrayAdapter);}
公共列表getAllCategory()
{
List getCategoryList=新建ArrayList();
dataAdapter=dataAdapter.openToWrite();
Cursor Cursor=db.rawQuery(“SELECT*FROM”+tb_Name,null);
如果(光标!=null){
cursor.moveToFirst();
而(!cursor.isAfterLast()){
CategoryClass categoryInstance=新的CategoryClass();
categoryInstance.setCategory(cursor.getString(1));
//将联系人添加到列表中
getCategoryList.add(categoryInstance);
cursor.moveToNext();
}
}
Log.d(“检索所有类别”,“计数<0”);
返回getCategoryList;
}
您是否从数据库中获取数据。?发布堆栈跟踪在listview中不显示任何值,甚至不在此处显示listview。如果可能,请发布logcat…或者您在何处获得空指针异常…我已将相同的代码放在按钮单击上,并已将try and catch立即放在catch块上获取此堆栈跟踪当尝试单击按钮时:在我的问题中添加了stachtrace,请在这一行看到它正在获得异常:List category=dataAdapterInstance.getAllCategory();在getAllCategory()中的return语句之前,yes已经完成了,但是我在上面发布了相同的堆栈跟踪。创建此类问题的代码中存在什么问题
06-11 20:46:09.531: W/System.err(17223): java.lang.NullPointerException
06-11 20:46:09.531: W/System.err(17223): at com.example.todolist.DatabaseAdapter.getAllCategory(DatabaseAdapter.java:88)
06-11 20:46:09.531: W/System.err(17223): at com.example.todolist.Categories$1.onClick(Categories.java:40)
06-11 20:46:09.531: W/System.err(17223): at android.view.View.performClick(View.java:3558)
06-11 20:46:09.531: W/System.err(17223): at android.view.View$PerformClick.run(View.java:14152)
06-11 20:46:09.531: W/System.err(17223): at android.os.Handler.handleCallback(Handler.java:605)
06-11 20:46:09.531: W/System.err(17223): at android.os.Handler.dispatchMessage(Handler.java:92)
06-11 20:46:09.531: W/System.err(17223): at android.os.Looper.loop(Looper.java:137)
06-11 20:46:09.531: W/System.err(17223): at android.app.ActivityThread.main(ActivityThread.java:4514)
06-11 20:46:09.531: W/System.err(17223): at java.lang.reflect.Method.invokeNative(Native Method)
06-11 20:46:09.531: W/System.err(17223): at java.lang.reflect.Method.invoke(Method.java:511)
06-11 20:46:09.531: W/System.err(17223): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
06-11 20:46:09.531: W/System.err(17223): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
06-11 20:46:09.531: W/System.err(17223): at dalvik.system.NativeStart.main(Native Method)
DatabaseAdapter dataAdapterInstance;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.categories_list);
ListView list = (ListView) findViewById(R.id.listView);
dataAdapterInstance = new DatabaseAdapter(this);
dataAdapterInstance = dataAdapterInstance.openToWrite();
List<CategoryClass> category = dataAdapterInstance.getAllCategory();
ArrayAdapter<CategoryClass> arrayAdapter = new ArrayAdapter<CategoryClass>(this,android.R.layout.simple_list_item_1,category);
arrayAdapter.notifyDataSetChanged();
list.setAdapter(arrayAdapter);}
public List<CategoryClass> getAllCategory()
{
List<CategoryClass> getCategoryList = new ArrayList<CategoryClass>();
dataAdapter = dataAdapter.openToWrite();
Cursor cursor = db.rawQuery("SELECT * FROM " + tb_Name,null);
if(cursor!=null){
cursor.moveToFirst();
while(!cursor.isAfterLast()){
CategoryClass categoryInstance = new CategoryClass();
categoryInstance.setCategory(cursor.getString(1));
// Adding contact to list
getCategoryList.add(categoryInstance);
cursor.moveToNext();
}
}
Log.d("retrieving all categories","count < 0");
return getCategoryList;
}