如何从SqliteDatabase获取数据到日历适配器?

时间:2015-03-01 17:40:09

标签: android

为什么我在CalendarAdapter中使用它时标记为错误?

你能帮我解决这个错误吗?

 public class CalendarAdapter extends BaseAdapter{   
        DbFertility db = new DbFertility(this); <=== (why when i use (this) in Calednar Adapater it marked as an error?
                    db.open();
                    int cycle = Integer.parseInt(db.getCycle(l));
                    int period = Integer.parseInt(db.getPeriod(l));
                    int date1 = Integer.parseInt(db.getPeriod(l));
                    db.close();}

    public DbHelper{

        public String getCycle(long l){
            String[] columns = new String[]{KEY_PERIOD_ID, KEY_CYCLE_LENGHT,KEY_PERIOD_LENGHT,KEY_FIRST_DAY_OF_PERIOD};
            Cursor c =  getOurDatabase().query(TABLE_PERIOD, columns, KEY_PERIOD_ID + "=" + l, null, null, null, null);
            if(c != null){
                c.moveToFirst();
                String cycle = c.getString(1);
                return cycle;
            }
            return null;
        }
        public String getPeriod(long l){
            String[] columns = new String[]{KEY_PERIOD_ID, KEY_CYCLE_LENGHT,KEY_PERIOD_LENGHT,KEY_FIRST_DAY_OF_PERIOD};
            Cursor c =  getOurDatabase().query(TABLE_PERIOD, columns, KEY_PERIOD_ID + "=" + l, null, null, null, null);
            if(c != null){
                c.moveToFirst();
                String period = c.getString(2);
                return period;
            }
            return null;
        }

    }

错误是:构造函数DbFertility(CalendarAdapter)未定义。 预期输出:我想从DbHelper获取数据。

1 个答案:

答案 0 :(得分:0)

我不确定Dbfertility的基类是什么,但如果扩展SQLiteOpenHelper,则可能需要Android Context。如果没有看到要实例化的类的构造函数的代码,就很难猜到。

从我的代码中看到,您的DbFertility构造函数必须使用BaseAdapterCalendarAdapter来定义。如果错误是未定义的构造函数,则需要在类中创建此构造函数:

public DbFetility(final BaseAdapter adapter){
    // do init here
}

我不确定你是否知道这一点,但是当你在类或方法中使用this时,它指的是你所在的当前类。在你的情况下,它引用CalendarAdapter

此外,这可能是格式问题,但CalendarAdpater的代码在创建db属性后的行上似乎有误。他们应该采用一种方法。

如果我的回答没有帮助,请考虑提供缺少的代码部分,否则很难弄清楚出了什么问题。