我的设计是想要在主程序中运用实例化的SQLiteOpenHeper中的查询功能,然后返回一个List给主程序,主程序接到传来的List后转化为一个二维数组,然后可以将里面的内容分开展示。
但是我在运行的时候,就一直在闪退,我看了debug,说我“尝试在空对象引用上调用虚拟方法”,我实在是找不到哪里有问题了,恳请大家们帮我看看。
这是是查询:
public List<Card2> sQuery(){
Card2 card;
List<Card2> list = new ArrayList<>();
String sql = "SELECT * FROM "+TABLE_NAME+" WHERE "+WEIGHT+" =5";
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery(sql, null);
int idIndex = cursor.getColumnIndex(ID);
int questionIndex = cursor.getColumnIndex(QUESTION);
int answerIndex = cursor.getColumnIndex(ANSWER);
int weightIndex = cursor.getColumnIndex(WEIGHT);
while (cursor.moveToNext()){
card = new Card2(cursor.getInt(idIndex),cursor.getString(questionIndex),cursor.getString(answerIndex),cursor.getInt(weightIndex));
list.add(card);
}
cursor.close();
sqLiteDatabase.close();
return list;
}
这个是主程序引入
List<Card2> list = new ArrayList<>();
list = db.sQuery();//老是说我这里有问题
String[][] str = list.toArray(new String[0][]);
tvq.setText(str[i][1]);
tva.setText(str[i][2]);
这是debug中标出的bug
还有一个就是我自定义的一个类
这是类里面定义的变量(是这么叫吧我不记得了
private Integer id;
private String question;
private String answer;
private Integer weight;
还有一点有问题的是下面的set有两个是灰色的,但是我看不出来哪里有问题
这个问题我找了半天了,实在是能力不够
;(