Ваша проблема, если предположить, что в таблице есть данные, вероятно, R.id.textView1 .... 3 не имеет ничего общего с макетом, переданным в SimpleCursorAdapter.т.е. ваша проблема, скорее всего, связана с комбинацией макета, переданного в SimpleCursorAdapter, и идентификаторов представлений, переданных как идентификаторы от до .
Если вы должны использовать: -
gridview = this.findViewById(R.id.gridView1);
csr = DBHelper.getAllRows();
myCursorAdapter = new SimpleCursorAdapter(
getBaseContext(),
//android.R.layout.simple_list_item_2,
android.R.layout.activity_list_item,
csr,
new String[]{
SO50674769DBHelper.COURSES_KEY_FIELD_ID1
//SO50674769DBHelper.FIELD_MATERIALDESC,
//SO50674769DBHelper.FIELD_MATERIALNUM
},
new int[]{android.R.id.text1}, //<<<< ID of the available view
0
);
gridview.setAdapter(myCursorAdapter);
Тогда результат будет выглядеть следующим образом: -
Изменение для использования другого макета запаса и 2 полей согласно: -
gridview = this.findViewById(R.id.gridView1);
csr = DBHelper.getAllRows();
myCursorAdapter = new SimpleCursorAdapter(
getBaseContext(),
android.R.layout.simple_list_item_2,
//android.R.layout.activity_list_item, //<<<< Changed Layout
csr,
new String[]{
SO50674769DBHelper.COURSES_KEY_FIELD_ID1,
SO50674769DBHelper.FIELD_MATERIALDESC,
//SO50674769DBHelper.FIELD_MATERIALNUM
},
new int[]{android.R.id.text1, android.R.id.text2}, //<<<< ID's of the 2 views
0
);
gridview.setAdapter(myCursorAdapter);
- Примечание Класс DatabaseHelper так назван для моего удобства.
В результате: -
Таким образом, я подозреваю, что вам нужно изменить макет на свой собственный.
Кроме того, как намекнул на ваш getAllRows
метод, вовсе не идеален.
- Проверка на нулевой Курсор бесполезна, так как Курсор, возвращаемый из rawQuery, не будет нулевым.Может быть пустым, и в этом случае метод Cursor
getCount
вернет 0 (). - moveToFirst также является пустой тратой.
Просто иметь: -
public Cursor getAllRows() {
SQLiteDatabase db = this.getReadableDatabase();
return db.rawQuery("SELECT * FROM " + DATAALL_TABLE, null);
}