在预发布的数据库中添加一行。

时间:2014-12-23 17:52:30

标签: android database android-sqlite

我已经完成了数据库,我想在第一次打开应用程序时添加几行。主要问题,不知道应用程序在哪里实现这一点。例如,当用户第一次打开应用程序时,会有一个示例项。该项目可以删除。删除行后,它将永远不会再显示。我正在使用Androrm(对象关系映射器)androrm home page。我的主要问题:如何在发布之前向数据库添加单行(where& how)。在onCreate中,每次都会添加一行,该类被打开。

取出大部分代码以简化操作。

实施

public class LogFirst extends Model {

    protected CharField db_oneName;
    public LogFirst() {
        super(true);
        db_oneName = new CharField(80);

    }

    public void setDB_oneName(String name1) {
        db_oneName.set(name1);
    }

    public String getDB_oneName() {
        return db_oneName.get();
    }


    @Override
    public String toString() {
        return db_oneName.get();
    }


    public static List<LogFirst> all() {
        return LogFirst.objects().all().toList();
    }

    public static QuerySet<LogFirst> objects() {
        return LogFirst.objects(context(), LogFirst.class);
    }

    public boolean save() {
        Format formatter = new SimpleDateFormat("ddmmhhss");
        String id = formatter.format(Calendar.getInstance().getTime()) + "";
        return this.save(context(), Integer.valueOf(id));
    }


    public boolean delete() {
        return this.delete(context());
    }


    private static Context context() {
        return ExtendsActivity.context();
    }
}

保存

LogFirst lf = new LogFirst();
lf.setDB_oneName(name.getText().toString());
lf.save();

适配器

public class LogFirstAdapter extends ArrayAdapter<LogFirst> {
    Context mContext;
    List<LogFirst> mLogs;

    public LogFirstAdapter(Context context, int textViewResourceId, List<LogFirst> logs) {
        super(context, textViewResourceId);
        mContext = context;
        mLogs = logs;
    }


    public void setLogs(List<LogFirst> logs) {
        mLogs = logs;
    }


    public List<LogFirst> getLogs() {
        return mLogs;
    }


    public void add(LogFirst log) {
        mLogs.add(log);
    }


    public void remove(LogFirst log) {
        mLogs.remove(log);
    }


    public int getCount() {
        return mLogs.size();
    }


    public LogFirst getItem(int position) {
        return mLogs.get(position);
    }


    public View getView(int position, View convertView, ViewGroup parent) {
        LogFirstRow view = (LogFirstRow) convertView;
        if (view == null) {
            view = new LogFirstRow(mContext);
        }
        LogFirst log = getItem(position);
        view.setLog(log);
        return view;
    }
}

1 个答案:

答案 0 :(得分:0)

理想情况下,您在迁移中会做类似的事情。我对Androrm并不熟悉,但看起来他们对迁移有一些支持:http://www.androrm.com/documentation/models/migrations/

尝试输入代码以在覆盖migrate函数中创建新记录。文档说迁移将被跟踪,但我不确定它将如何发挥作用以便看看会发生什么。