我已经通过自己的程序创建了一个数据库,并且我已经SQLite Database Browser
进行了检查,以确保该数据库中有数据。之后,我在onCreate
(下面的代码)中添加了一些代码,以便在ListView
在下面的数据中,我确信每个组件(ListView和CursorAdapter)都正常工作(因为我在将它们放在一起之前测试了每个组件)并且SQLiteOpenHandler也正常工作,因为我可以使用这个类将数据写入数据库。但是,当我嵌入SQLiteOpenHandler时,出了点问题。我想我错过了一些显示数据而不是代码错误的行。
这是我的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //in this `main layout` I have put `ListView` in
//DatabaseHelper: a class extends from `SQLiteOpenHandler`
databaseHelper = new DatabaseHelper(this);
ListView listView = (ListView) findViewById(R.id.times_list); //layout for `ListView`
//TimeTrackerAdapter: a class extends from `CursorAdapter`
timeTrackerAdapter = new TimeTrackerAdapter(this, databaseHelper.getAllTimeRecord());
//getallTimeRecord() method: return a cursor of whole data in database
listView.setAdapter(timeTrackerAdapter);
}
请给我一个帮助。
谢谢:)
@Edit:我的TimeTrackerAdapter
课程,来自CursorAdapter
public class TimeTrackerAdapter extends CursorAdapter{
public TimeTrackerAdapter(Context context, Cursor cursor){
super(context, cursor);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView nameTextView = (TextView) view.findViewById(R.id.time_view);
//time_view: just a layout to display "time"
nameTextView.setText(cursor.getString(1));
TextView valueTextView = (TextView) view.findViewById(R.id.notes_view);
valueTextView.setText(cursor.getString(2));
//notes_view: just a layout to display "notes"
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.time_list_item, parent, false);
return view;
}
}
@Edit 2:
在这里我的方法getAllTimeRecord()
public Cursor getAllTimeRecord(){
return database.rawQuery("select * from "+TABLE_NAME, null);
}
如果那个方法有问题,我认为是SQLite Query。但是,我不确定如何检查它:((运行时,Logcat不会对该查询产生错误)。
答案 0 :(得分:0)
你应该放下你的TimeTrackerAdapter部分
public int getCount() {
return times.size();
}
public Object getItem(int index) {
return getItem(index);
}
public long getItemId(int index) {
return index;
}