如何将android studio中sqlite数据库中的随机文本显示到新布局中?

如何将android studio中sqlite数据库中的随机文本显示到新布局中?,android,layout,android-sqlite,Android,Layout,Android Sqlite,我想显示一个以前在ListView中显示的文本视图,之后它将显示在另一个布局中,其中一个可以查看,另一个可以比较以确保它是正确的。 我的数据库是这个 public class DataBaseHandler extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "Preguntas_y_Respuestas_Ma

我想显示一个以前在ListView中显示的文本视图,之后它将显示在另一个布局中,其中一个可以查看,另一个可以比较以确保它是正确的。 我的数据库是这个

public class DataBaseHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "Preguntas_y_Respuestas_Manager",
        TABLE_PyR = "PreguntasYRespuestas",
        KEY_ID = "id",
        KEY_PREGUNTA = "pregunta",
        KEY_RESPUESTA = "respuesta";

public DataBaseHandler(Context context) {

    super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override
public void onCreate(SQLiteDatabase db) {

    db.execSQL("CREATE TABLE " + TABLE_PyR + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_PREGUNTA + " TEXT," + KEY_RESPUESTA + " TEXT)");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("DROP TABLE IF EXISTS " + TABLE_PyR);

    onCreate(db);

}

public void createPregunta_y_Respuesta(PreguntasYRespuestas pYr) {

    SQLiteDatabase db = getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put(KEY_PREGUNTA, pYr.getPregunta());
    values.put(KEY_RESPUESTA, pYr.getRespuesta());

    db.insert(TABLE_PyR, null, values);
    db.close();

}

public PreguntasYRespuestas getPyR(int id) {

    SQLiteDatabase db = getReadableDatabase();

    Cursor cursor = db.query(TABLE_PyR, new String[]{KEY_ID, KEY_PREGUNTA, KEY_RESPUESTA}, KEY_ID + "=?", new String[]{String.valueOf(id)}, null, null, null, null);

    if(cursor!=null)
        cursor.moveToFirst();

    PreguntasYRespuestas preg_y_resp =  new PreguntasYRespuestas(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2));
    db.close();
    return preg_y_resp;

}

public void deletePregunta(PreguntasYRespuestas pyr){

    SQLiteDatabase db = getWritableDatabase();
    db.delete(TABLE_PyR, KEY_ID + "=?",new String[]{String.valueOf(pyr.getId())});
    db.close();

}

public  int getPreguntasCount(){

    SQLiteDatabase db = getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_PyR, null);

    int count = cursor.getCount();
    db.close();
    cursor.close();

    return count;
}

public int UpdatePregunta(PreguntasYRespuestas pyr){

    SQLiteDatabase db = getReadableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_PREGUNTA, pyr.getPregunta());
    values.put(KEY_RESPUESTA, pyr.getRespuesta());

    int rowsAffected = db.update(TABLE_PyR, values, KEY_ID + "=?", new String[] {String.valueOf(pyr.getId()) });
    db.close();

    return rowsAffected;

}

public List<PreguntasYRespuestas>getAllPreguntas(){

    List<PreguntasYRespuestas> pyr = new ArrayList<PreguntasYRespuestas>();

    SQLiteDatabase db = getWritableDatabase();
    Cursor cursor = db. rawQuery("SELECT * FROM "+ TABLE_PyR, null);

    if (cursor.moveToFirst()){

        do {
            pyr.add(new PreguntasYRespuestas(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2)));
        }
        while (cursor.moveToNext());

    }

    cursor.close();
    db.close();
    return pyr;

}
公共类DataBaseHandler扩展了SQLiteOpenHelper{
私有静态最终int数据库_VERSION=1;
私有静态最终字符串数据库\u NAME=“Preguntas\u y\u Respuestas\u Manager”,
表_PyR=“PreguntasYRespuestas”,
KEY_ID=“ID”,
KEY_PREGUNTA=“PREGUNTA”,
KEY_RESPUESTA=“RESPUESTA”;
公共数据库处理程序(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
db.execSQL(“创建表”+TABLE_PyR+”(“+KEY_ID+”整型主键自动递增“+KEY_PREGUNTA+”文本“+KEY_RESPUESTA+”文本)”);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+表_PyR);
onCreate(db);
}
公共无效创建Pregunta_y_Respuesta(PreguntasYRespuestas pYr){
SQLiteDatabase db=getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_PREGUNTA,pYr.getPregunta());
value.put(KEY_RESPUESTA,pYr.getRespuesta());
插入(表_PyR,空,值);
db.close();
}
公共学前教育(国际id){
SQLiteDatabase db=getReadableDatabase();
Cursor Cursor=db.query(表_PyR,新字符串[]{KEY_ID,KEY_PREGUNTA,KEY_RESPUESTA},KEY_ID+“=?”,新字符串[]{String.valueOf(ID)},null,null,null,null);
如果(光标!=null)
cursor.moveToFirst();
PreguntasYRespuestas preg_y_resp=新的PreguntasYRespuestas(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2));
db.close();
返回preg_y_resp;
}
公共空间删除Pregunta(PreguntasYRespuestas pyr){
SQLiteDatabase db=getWritableDatabase();
delete(TABLE_PyR,KEY_ID+“=?”,新字符串[]{String.valueOf(PyR.getId())});
db.close();
}
public int getpreguntascont(){
SQLiteDatabase db=getReadableDatabase();
Cursor Cursor=db.rawQuery(“SELECT*FROM”+TABLE_PyR,null);
int count=cursor.getCount();
db.close();
cursor.close();
返回计数;
}
公共int UpdatePregunta(PreguntasYRespuestas pyr){
SQLiteDatabase db=getReadableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_PREGUNTA,pyr.getPregunta());
value.put(KEY_RESPUESTA,pyr.getRespuesta());
int rowsAffected=db.update(TABLE_PyR,values,KEY_ID+“=?”,新字符串[]{String.valueOf(PyR.getId())});
db.close();
返回受影响的行;
}
公共列表GetAllPreguntas(){
List pyr=new ArrayList();
SQLiteDatabase db=getWritableDatabase();
Cursor Cursor=db.rawQuery(“SELECT*FROM”+TABLE_PyR,null);
if(cursor.moveToFirst()){
做{
添加(新的PreguntasYRespuestas(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2));
}
while(cursor.moveToNext());
}
cursor.close();
db.close();
返回pyr;
}

}使用适当的查询将潜在文本提取到光标

使用
cursor.getCount()
获取光标中的行数

获取一个随机数,作为一个整数,介于0和行计数-1之间(因为光标定位是基于0的)


然后使用cursor.moveToPosition(你的随机数)并从该行的游标(即文本)中提取数据,最后使用
cursor.close()

使用适当的查询将潜在文本提取到光标

使用
cursor.getCount()
获取光标中的行数

获取一个随机数,作为一个整数,介于0和行计数-1之间(因为光标定位是基于0的)


然后使用cursor.moveToPosition(你的随机数)
并从该行的游标(即文本)中提取数据,最后使用
cursor.close()

我在哪里使用该代码?在我的数据库中还是在其他活动中?您可以在DatabaseHandler或活动中使用该代码。但是,在将DB相关代码放入DatabaseHandle之后,您可能会在DatabaseHandler类中的一个方法中对上述代码进行编码,例如“public String getRandomText(){……}”,然后从相应的活动中调用它,方法是
youredittext.setText(getRandomText(),TextView.BufferType.EDITABLE)在哪里使用该代码?在我的数据库中还是在其他活动中?您可以在DatabaseHandler或活动中使用该代码。但是,在将DB相关代码放入DatabaseHandle之后,您可能会在DatabaseHandler类中的一个方法中对上述代码进行编码,例如“public String getRandomText(){……}”,然后从相应的活动中调用它,方法是
youredittext.setText(getRandomText(),TextView.BufferType.EDITABLE)