Android 将行添加到不断增长的预发布数据库中。
我已经完成了数据库,我想添加一些第一次打开应用程序时出现的行。主要问题是,不知道在应用程序中的何处实现此功能。例如,当用户第一次打开应用程序时,会出现一个示例项。可以删除该项目。删除该行后,它将不再显示。我正在使用Androm(对象关系映射器)。我的主要问题是:在发布之前,如何向数据库中添加一行(where&How)。在onCreate中,每次打开类时都会添加一行 去掉了大部分代码,使它变得简单 实施Android 将行添加到不断增长的预发布数据库中。,android,database,android-sqlite,Android,Database,Android Sqlite,我已经完成了数据库,我想添加一些第一次打开应用程序时出现的行。主要问题是,不知道在应用程序中的何处实现此功能。例如,当用户第一次打开应用程序时,会出现一个示例项。可以删除该项目。删除该行后,它将不再显示。我正在使用Androm(对象关系映射器)。我的主要问题是:在发布之前,如何向数据库中添加一行(where&How)。在onCreate中,每次打开类时都会添加一行 去掉了大部分代码,使它变得简单 实施 public class LogFirst extends Model { prot
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();
}
}
适配器
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;
}
}
公共类LogFirstAdapter扩展了ArrayAdapter{
语境;
列出MLOG;
公共LogFirstAdapter(上下文上下文、int textViewResourceId、列表日志){
super(上下文,textViewResourceId);
mContext=上下文;
mLogs=日志;
}
公共作废设置日志(列出日志){
mLogs=日志;
}
公共列表getLogs(){
返回MLOG;
}
公共作废添加(日志第一次日志){
mLogs.add(日志);
}
公共无效删除(日志第一次日志){
mLogs.remove(日志);
}
public int getCount(){
返回mLogs.size();
}
公共日志第一个getItem(内部位置){
返回mLogs.get(位置);
}
公共视图getView(int位置、视图转换视图、视图组父视图){
LogFirstRow视图=(LogFirstRow)convertView;
如果(视图==null){
视图=新的LogFirstRow(mContext);
}
LogFirst log=getItem(位置);
view.setLog(log);
返回视图;
}
}
理想情况下,您应该在迁移中执行类似的操作。我不熟悉Androm,但看起来他们对迁移有一些支持:
尝试在重写的migrate
函数中输入代码以创建新记录。文档说迁移会被跟踪,但我不确定它将如何进行,所以请测试看看会发生什么
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;
}
}