Android 使用适配器显示SQLiteDatabase中的数据
DBHelper类的代码: 人族活动的代码:Android 使用适配器显示SQLiteDatabase中的数据,android,sqlite,cursor,android-listview,adapter,Android,Sqlite,Cursor,Android Listview,Adapter,DBHelper类的代码: 人族活动的代码: public class Terran extends Activity { private DBHelper dbHelp = null; private Cursor ourCursor = null; private DBAdapter adapter = null; @Override protected void onCreate(Bundle savedInstanceState) {
public class Terran extends Activity {
private DBHelper dbHelp = null;
private Cursor ourCursor = null;
private DBAdapter adapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.terran_layout);
// this is our listview element, obtained by id from our xml layout
ListView myListView = (ListView) findViewById(R.id.tvterran);
// create our database helper
dbHelp = new DBHelper(this);
// we call the create right afther initializing helper
dbHelp.createDatabase();
// open the database
dbHelp.openDataBase();
// get our cursor
ourCursor = dbHelp.getTerran();
// tell android to start managing cursor
startManagingCursor(ourCursor);
// create our adapter
adapter = new DBAdapter(ourCursor);
// set the adapter
myListView.setAdapter(adapter);
} catch (Exception e) {
// send real error message
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
e.printStackTrace();
}
}
class DBAdapter extends CursorAdapter {
DBAdapter(Cursor c) {
super(Terran.this, c);
}
@Override
public void bindView(View row, Context ctxt, Cursor c) {
// TODO Auto-generated method stub
terranHolder holder = (terranHolder) row.getTag();
holder.populateFrom(c, dbHelp);
}
@Override
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.terran_layout, parent, false);
terranHolder holder = new terranHolder(row);
row.setTag(holder);
return (row);
}
}
static class terranHolder {
private TextView name = null;
terranHolder(View row) {
name = (TextView) row.findViewById(R.id.tvterran);
}
void populateFrom(Cursor c, DBHelper r) {
name.setText(r.getName(c));
}
}
}
Logcat异常:
01-30 20:07:13.765: E/ERROR(7153): ERROR IN CODE: java.lang.NullPointerException
01-30 20:07:13.775: W/System.err(7153): java.lang.NullPointerException
01-30 20:07:13.775: W/System.err(7153): at com.subdeveloper.starcraftbuilds.Terran.onCreate(Terran.java:46)
01-30 20:07:13.775: W/System.err(7153): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-30 20:07:13.775: W/System.err(7153): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623)
01-30 20:07:13.775: W/System.err(7153): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1499)
01-30 20:07:13.775: W/System.err(7153): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
01-30 20:07:13.775: W/System.err(7153): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
01-30 20:07:13.775: W/System.err(7153): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:731)
01-30 20:07:13.775: W/System.err(7153): at android.widget.TabHost.setCurrentTab(TabHost.java:403)
01-30 20:07:13.775: W/System.err(7153): at android.widget.TabHost.addTab(TabHost.java:242)
我无法从查询结果中获取要生成的ListView。从我的调试中,我了解到错误在第46行的人族类中。我想不出是怎么回事。通过与其他数据库的测试,数据库连接可以正常工作 com.subdeveloper.starcraftbuilds.Terran.onCreateTerran.java:46 在中放置断点并运行调试器。有些东西是空的,我猜是列表。它开得像46 顺便说一句,我是黄金随机球员。过去是高抛钻石。祝项目顺利 您的ListView为空,这意味着您的布局中没有具有该id的ListView,或者android没有为列表生成正确的id,并且您的旧id不正确
尝试刷新项目,从gen文件夹中删除R类,以便再次生成ID,重新启动IDE。除了您向我们展示的内容外,还可以指出哪一行是第46行。myListView.setAdapteradapter;第46行可能是ListView未正确初始化。你确定在你的R.layout.terran\u布局中有一个id为tvterran的列表视图吗?是的,带有名为tvterran的列表视图的linearlayout。添加一个日志。检查这个,lisview:+myListView就在第46行之前,然后运行你的应用程序。在Logcat中查看这一行返回的内容。tryed debugation显示适配器有值,直到初始化listview。逐步完成它。在那里的某个地方是空的。
01-30 20:07:13.765: E/ERROR(7153): ERROR IN CODE: java.lang.NullPointerException
01-30 20:07:13.775: W/System.err(7153): java.lang.NullPointerException
01-30 20:07:13.775: W/System.err(7153): at com.subdeveloper.starcraftbuilds.Terran.onCreate(Terran.java:46)
01-30 20:07:13.775: W/System.err(7153): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-30 20:07:13.775: W/System.err(7153): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623)
01-30 20:07:13.775: W/System.err(7153): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1499)
01-30 20:07:13.775: W/System.err(7153): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
01-30 20:07:13.775: W/System.err(7153): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
01-30 20:07:13.775: W/System.err(7153): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:731)
01-30 20:07:13.775: W/System.err(7153): at android.widget.TabHost.setCurrentTab(TabHost.java:403)
01-30 20:07:13.775: W/System.err(7153): at android.widget.TabHost.addTab(TabHost.java:242)