Я создал базу данных с помощью своей собственной программы и проверил 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;
}
}
@ Редактировать 2:
а вот мой метод getAllTimeRecord()
public Cursor getAllTimeRecord(){
return database.rawQuery("select * from "+TABLE_NAME, null);
}
Если с этим методом что-то не так, я думаю, SQLite Query. Но я не уверен, как это проверить :( (при запуске Logcat не принимает ошибку для этого запроса).