android sqllitedatabase的下一个和上一个按钮

时间:2016-12-19 17:33:03

标签: android sqlite

此代码中缺少什么?它只向我显示数据库中的第一条记录,但不会移动到下一条记录。

下一步按钮:

if (v.getId() == R.id.btnNext) {

     try {
            pos++;
            database.Open();
            Houes h = new Houes();
            database.Shows(h, pos);
            txNo.setText("" + h.getHouse_id());
            txAdd.setText("" + h.getHouse_address());
            txOn.setText("" + h.getHouse_owner());
            txVal.setText("" + h.getHouse_value());
            txDis.setText("" + h.getHouse_discount());
            database.Close();

        } catch (Exception e) {

        }

数据库类:

protected void Shows(Houes house , int p ) {


   // String[] columns = {house_id, house_address, house_owner, house_value, house_discount};
    Cursor c = db.rawQuery("select * from " + database_table, null);


    int iRow = c.getColumnIndex(house_id);
    int iAdd = c.getColumnIndex(house_address);
    int iOwn = c.getColumnIndex(house_owner);
    int iVal = c.getColumnIndex(house_value);
    int iDis = c.getColumnIndex(house_discount);

    if(p==1){
        c.moveToFirst();
    }else if(p>1&&c.isAfterLast()==false){
        c.moveToNext();
    }


house.setHouse_id(c.getInt(iRow));
house.setHouse_address(c.getString(iAdd));
house.setHouse_owner(c.getString(iOwn));
house.setHouse_value(c.getInt(iVal));
house.setHouse_discount(c.getInt(iDis));




    }

1 个答案:

答案 0 :(得分:0)

更改显示以返回它提取的光标,例如

Cursor Shows() {

    return Cursor c = db.rawQuery("select * from " + database_table, null);
}

在下一个按钮点击监听器之前和之外调用显示方法,并在以下内容之后显示第一个房屋值: -

cursor = db.shows();
if (cursor.moveToFirst()) {
    int iRow = c.getColumnIndex(house_id); //etc
} else {
  //handle no houses to show
}

......

在你的下一个按钮监听器

    if (cursor.moveToNext)  {
        //do you stuff here
    } else {
        //handle end of rows here
    }

上一个按钮侦听器基本相同,但使用moveToPrevious

如果你需要定位到一个特定的房子,那么在它返回后循环移动光标,即只需从节目移动现有代码。

确保在访问光标后执行cursor.close();