数据
public class SQLBean {
private String id; //主键自增id
private String title; //日记标题
private String context; //日记内容
private String contextfl; //日记内容
public String get_id() {//获取日记id
return id;
}
public void set_id(String _id) {//设置日记id
this.id = _id;
}
public String getTitle() {//获取日记标题
return title;
}
public void setTitle(String title) {//设置日记标题
this.title = title;
}
public String getContext() {//获取日记内容
return context;
}
}
public void setContext(String context) {//设置日记内容
this.context = context;
}
public String getFl() {//获取日记内容
return contextfl;
}
public void setFl(String fl) {//设置日记内容
this.contextfl = contextfl;
}
AddACTIVITY.java里对spinner的代码,
<Spinner
android:id="@+id/fl"
android:layout_width="175dp"
android:layout_height="85dp"
android:background="#78ffffff"
android:layout_marginLeft="0dp"
android:scrollbarSize="150dp"
android:spinnerMode="dropdown"
android:theme="@style/itemSpinnerStyle"
/>
public class AddActivity extends Activity {
private Button bt_back;
private Button bt_save;
private TextView tv_title,tv_notes_fl;
private SQLiteDatabase db;//数据库操作类
private DatabaseOperation dop;//自定义数据库
private LineEditText et_Notes,et_Notesbt;
String editModel = null;
int item_Id;
String title;
String time;
String context;
String context2;
private ImageButton ib_lk;
private Spinner spinner;
private ArrayAdapter<String> mAdapter ;
private String [] mStringArray;
String contextfl;
boolean isAutoSelect = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
bt_back = (Button) findViewById(R.id.bt_back);
bt_back.setOnClickListener(new ClickEvent());
bt_save = (Button) findViewById(R.id.bt_save);
bt_save.setOnClickListener(new ClickEvent());
tv_title = (TextView) findViewById(R.id.tv_title);
et_Notes = (LineEditText) findViewById(R.id.et_note);
et_Notesbt = (LineEditText) findViewById(R.id.et_notebt);
dop = new DatabaseOperation(this, db);
intent = getIntent();
editModel = intent.getStringExtra("editModel");
item_Id = intent.getIntExtra("noteId", 0);
spinner = (Spinner) findViewById(R.id.fl);
final String[] mItems = {"工作", "会议", "社交", "财产", "身材"};
ArrayAdapter<String> adapter1 = new
ArrayAdapter<String(this,android.R.layout.simple_spinner_item, mItems);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter1);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, intposition,long id)
{
// TODO Auto-generated method stub
if(isAutoSelect){
isAutoSelect = false;
}else{
String str=parent.getItemAtPosition(position).toString();//获取item的值。
Toast.makeText(getApplicationContext(), "你选择的分类是:"
+str,Toast.LENGTH_LONG).show();
// to do something...
}
contextfl = (String) spinner.getSelectedItem();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
loadData();
}
// 加载数据
private void loadData() {
// 如果是新增记事模式,则将editText清空
if (editModel.equals("newAdd")) {
et_Notes.setText("");
et_Notesbt.setText("");
spinner.setSelection(2,true);
}
// 如果编辑的是已存在的记事,则将数据库的保存的数据取出,并显示在EditText中
else if (editModel.equals("update")) {
tv_title.setText("编辑记事");
dop.create_db();
Cursor cursor = dop.query_db(item_Id);
cursor.moveToFirst();
// 取出数据库中相应的字段内容
title = cursor.getString(cursor.getColumnIndex("title"));
context = cursor.getString(cursor.getColumnIndex("context"));
contextfl = cursor.getString(cursor.getColumnIndex("contextfl"));
final String[] mItems = {"工作", "会议", "社交", "财产"};
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mItems);
//spinner.setAdapter(adapter1);
int position = adapter1.getPosition(contextfl);
spinner.setSelection(position,true);
et_Notesbt.append(title.substring(startIndex2, title.length()));
et_Notes.append(context.substring(startIndex, context.length()));
dop.close_db();
}
}
Mainactivity.java里显示
public class MainActivity extends Activity {
private Button bt_add;// 添加按钮
private SQLiteDatabase db;//数据库对象
private DatabaseOperation dop;//自定义数据库类
private MyGridView lv_notes;// 消息列表
private TextView tv_note_id, tv_locktype, tv_lock,tv_note_fl;
public AlarmManager am;// 消息管理者
public EditText et_keyword;// 搜索框
public MainAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_note_fl = (TextView) findViewById(R.id.tv_note_fl);
bt_add = (Button) findViewById(R.id.bt_add);
bt_add.setOnClickListener(new ClickEvent());
et_keyword = (EditText) findViewById(R.id.et_keyword);
// 数据库操作
dop = new DatabaseOperation(this, db);
lv_notes = (MyGridView) findViewById(R.id.lv_notes);
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
// 显示记事列表
showNotesList();
// 为记事列表添加监听器
lv_notes.setOnItemClickListener(new ItemClickEvent());
// 为记事列表添加长按事件
lv_notes.setOnItemLongClickListener(new ItemLongClickEvent());
}
// 显示记事列表
private void showNotesList() {
// 创建或打开数据库 获取数据
dop.create_db();
//获取数据库内容
Cursor cursor = dop.query_db();
if (cursor.getCount() > 0) {
List<SQLBean> list = new ArrayList<SQLBean>();//日记信息集合里
while (cursor.moveToNext()) {// 光标移动成功
// 把数据取出
SQLBean bean = new SQLBean();//创建数据库实体类
//保存日记信息id到实体类
bean.set_id("" + cursor.getInt(cursor.getColumnIndex("_id")));
bean.setContext(cursor.getString(cursor.getColumnIndex("context")));
//保存日记内容到实体类
bean.setFl(cursor.getString(cursor.getColumnIndex("contextfl")));
//保存日记FFFFFFFFFFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL到实体类
//保存日记标题到实体类
bean.setTitle(cursor.getString(cursor.getColumnIndex("title")));
//保存日记记录时间到实体类
bean.setLock(cursor.getString(cursor.getColumnIndex("lock")));
list.add(bean);//把保存日记信息实体类保存到日记信息集合里
}
//倒序显示数据
Collections.reverse(list);
adapter = new MainAdapter(list, this);//装载日记信息到首页
lv_notes.setAdapter(adapter);//日记列表设置日记信息适配器
}
dop.close_db();//关闭数据库
}
根据代码分析,因为在 AddActivity.java 中,当用户更改分类后,没有对分类进行保存操作,而是直接退出了该页面,从而导致数据丢失。建议在用户选择分类后,点击保存按钮时,将数据保存到数据库中,以免数据丢失。具体方式可参考以下示例代码:
bt_save.setOnClickListener(new ClickEvent(){
public void onClick(View v){
//将用户编辑的数据保存到数据库中
SQLBean bean = new SQLBean();
bean.setTitle(et_Notesbt.getText().toString());
bean.setContext(et_Notes.getText().toString());
bean.setFl(contextfl);
dop.create_db();
if(editModel.equals("newAdd")){
dop.insert_db(bean);
}else if(editModel.equals("update")){
dop.update_db(item_Id, bean);
}
dop.close_db();
//返回上一页面
finish();
}
});
在保存操作时,首先将用户编辑的数据保存到 SQLBean 实体类中,然后根据页面是新增还是编辑来调用不同的数据库操作语句。最后关闭数据库并返回上一页面。