afinal FinalDb 和 FinalActivity 使用


测试实体类 Memoir 

 1 package com.memoir.entity;
 2 
 3 import com.memoir.configs.MemoirConfig;
 4 
 5 import net.tsz.afinal.annotation.sqlite.Id;
 6 import net.tsz.afinal.annotation.sqlite.Table;
 7 
 8 @Table(name=MemoirConfig.MEMOIRE_TABLE_NAME) //自定义创建表名 否则 表名默认为 com_memoir_entity_memoir
 9 public class Memoir {
10     
11     @Id(column="id")//自定义主键名称
12     private String id;
13     private String title;
14     private String memoir;
15     private String createDate;
16     private String lstModDate;
17     //get set 方法不可少
18     public String getId() {
19         return id;
20     }
21 
22     public void setId(String id) {
23         this.id = id;
24     }
25 
26     public String getTitle() {
27         return title;
28     }
29 
30     public void setTitle(String title) {
31         this.title = title;
32     }
33 
34     public String getMemoir() {
35         return memoir;
36     }
37 
38     public void setMemoir(String memoir) {
39         this.memoir = memoir;
40     }
41 
42     public String getCreateDate() {
43         return createDate;
44     }
45 
46     public void setCreateDate(String createDate) {
47         this.createDate = createDate;
48     }
49 
50     public String getLstModDate() {
51         return lstModDate;
52     }
53 
54     public void setLstModDate(String lstModDate) {
55         this.lstModDate = lstModDate;
56     }
57     
58 }

记录列表类 MemoirsActivity.java

  1 package com.memoir.activity;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 import net.tsz.afinal.FinalActivity;
  7 import net.tsz.afinal.FinalDb;
  8 import net.tsz.afinal.annotation.view.ViewInject;
  9 
 10 import com.memoir.R;
 11 import com.memoir.common.AndroidTools;
 12 import com.memoir.common.TypeChangeFunction;
 13 import com.memoir.configs.MemoirConfig;
 14 import com.memoir.entity.Memoir;
 15 
 16 import android.app.AlertDialog;
 17 import android.content.DialogInterface;
 18 import android.content.Intent;
 19 import android.os.Bundle;
 20 import android.view.KeyEvent;
 21 import android.view.Menu;
 22 import android.view.MenuItem;
 23 import android.view.View;
 24 import android.view.ViewGroup;
 25 import android.widget.AdapterView;
 26 import android.widget.AdapterView.OnItemClickListener;
 27 import android.widget.AdapterView.OnItemLongClickListener;
 28 import android.widget.BaseAdapter;
 29 import android.widget.Button;
 30 import android.widget.ListView;
 31 import android.widget.TextView;
 32 
 33 public class MemoirsActivity extends FinalActivity {
 34     // 定义选项菜单
 35     private static final int DB_ISNERT = 0x11;
 36     private static final int EXIT = 0x12;
 37     
 38     //listview
 39     @ViewInject(id=R.id.listMemoirs) ListView lv;
 40     @ViewInject(id=R.id.btnAdd,click="btnAddClick") Button btnAdd ; //注解控件对象和事件
 41     List<Memoir> mListViewData = new ArrayList<Memoir>();  
 42     
 43     ArrayList<String> al = new ArrayList<String>();
 44     FinalDb fd;//定义finaldb
 45     
 46     @Override
 47     public void onCreate(Bundle savedInstanceState) {
 48         super.onCreate(savedInstanceState);
 49         setContentView(R.layout.memoirs);
 50         initListData();
 51         lv.setOnItemLongClickListener(new OnLvItemLongOnclick());
 52         lv.setOnItemClickListener(new OnLvItemclickListen());
 53     }
 54     
 55     public void btnAddClick(View v){
 56         Intent intent = new Intent(MemoirsActivity.this, AddMemoirActivity.class);
 57         this.startActivityForResult(intent, 30);
 58     }
 59     
 60     @Override
 61     public boolean onCreateOptionsMenu(Menu menu)
 62     {
 63         menu.add(0, DB_ISNERT, 0, "添加记录");
 64         menu.add(0, EXIT, 0, "退出程序");
 65         return super.onCreateOptionsMenu(menu);
 66     }
 67     
 68     /**
 69      * 初始化列表信息
 70      */
 71     private void initListData(){
 72         fd = FinalDb.create(this,MemoirConfig.DB_NAME);//创建数据库  后面参数为自定义库名 否则为FinalDb
 73         mListViewData.clear();  
 74         mListViewData.addAll(fd.findAll(Memoir.class));  
 75         mListAdapter.notifyDataSetChanged(); 
 76         lv.setAdapter(mListAdapter);
 77     
 78     }
 79     
 80     private BaseAdapter mListAdapter = new BaseAdapter() {  
 81         @Override
 82         public View getView(int position, View convertView, ViewGroup parent) {
 83             View item = View.inflate(MemoirsActivity.this, R.layout.listitem, null);  
 84             Memoir memo= mListViewData.get(position);  
 85             
 86             TextView txtID = (TextView) item.findViewById(R.id.textId);
 87             txtID.setVisibility(View.GONE);
 88             TextView txtTitle = (TextView) item.findViewById(R.id.txtTitle);
 89             TextView txtMemoir = (TextView) item.findViewById(R.id.txtMemoir);
 90             TextView txtCreateDate = (TextView) item.findViewById(R.id.txtCreateDate);
 91             TextView txtLstModDt = (TextView) item.findViewById(R.id.txtLstModDt);
 92             
 93             txtID.setText(memo.getId());  
 94             txtTitle.setText(getStringTxt(R.string.title)+" " +memo.getTitle());  
 95             txtMemoir.setText(getStringTxt(R.string.memoir)+" "+memo.getMemoir());  
 96             txtCreateDate.setText(getStringTxt(R.string.createdate)+" "+memo.getCreateDate());
 97             txtLstModDt.setText(getStringTxt(R.string.lstmoddate)+" "+memo.getLstModDate());
 98             return item;  
 99         }  
100         
101         @Override
102         public long getItemId(int position) {  
103             return position;  
104         }  
105           
106         @Override
107         public Object getItem(int position) {  
108             return mListViewData.get(position);  
109         }  
110           
111         @Override
112         public int getCount() {  
113             return mListViewData.size();  
114         }
115 
116     };   
117     
118     @Override
119     protected void onActivityResult(int requestCode, int resultCode,
120             Intent intent) {
121         if (intent != null) {
122             if (resultCode==RESULT_OK){
123 //                al = intent.getStringArrayListExtra("data");
124 //                if (al.size()>0){
125                     initListData();
126 //                }
127             }
128         }
129     }
130     
131     @Override
132     public boolean onOptionsItemSelected(MenuItem item){
133         switch(item.getItemId())
134         {
135             case DB_ISNERT:
136                 // 跳转添加界面
137                 Intent intent = new Intent(MemoirsActivity.this, AddMemoirActivity.class);
138                 this.startActivityForResult(intent, 30);
139                 break;
140             case EXIT:
141                 //退出
142                 AndroidTools.exitShowDialog(MemoirsActivity.this);
143                 break;
144         }
145         return super.onOptionsItemSelected(item);
146     }
147 
148     
149     /**
150      * 
151      * @param tag
152      * @return
153      */
154     public String getStringTxt(int tag){
155         return TypeChangeFunction.toString(MemoirsActivity.this.getResources().getText(tag));
156     }
157     
158     /**
159      * 菜单、返回键响应
160      */
161     @Override
162     public boolean onKeyDown(int keyCode, KeyEvent event) {
163         if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
164             AndroidTools.exitBy2Click(this);
165         }
166         return false;
167     }
168     
169     // listview点击事件
170     class OnLvItemclickListen implements OnItemClickListener {
171         @Override
172         public void onItemClick(AdapterView<?> parent, View view, int position,
173                 long id) {
174             //修改
175             Intent intent = new Intent(MemoirsActivity.this, AddMemoirActivity.class);
176             
177             Memoir m = mListViewData.get(position);
178             al.clear();
179             al.add(0,m.getId());
180             al.add(1,m.getTitle());
181             al.add(2,m.getMemoir());
182             al.add(3,m.getCreateDate());
183             al.add(4,m.getLstModDate());
184             intent.putStringArrayListExtra("data", al);
185             MemoirsActivity.this.startActivityForResult(intent, 30);
186         }
187 
188     }
189     
190     // listview长按事件
191     class OnLvItemLongOnclick implements OnItemLongClickListener {
192         @Override
193         public boolean onItemLongClick(AdapterView<?> parent, View view,
194                 final int position, long id) {
195             new AlertDialog.Builder(MemoirsActivity.this).setTitle("提示")
196             .setMessage("是否确定删除选中的记录")
197             .setPositiveButton("确定", new DialogInterface.OnClickListener() {
198                 @Override
199                 public void onClick(DialogInterface dialog, int which) {
200 //                    int positon = Integer.valueOf(v.getTag().toString());
201                     Memoir memo = mListViewData.get(position);  
202                     try{
203                         //删除
204                         fd.deleteById(Memoir.class, memo.getId());
205                         
206                         mListAdapter.notifyDataSetChanged();
207                         lv.setAdapter(mListAdapter);
208                     }catch(Exception e){
209                         e.printStackTrace();
210                     }
211 
212                 }
213 
214             }).setNegativeButton("取消", null).show();
215             return false;
216         }
217 
218     }
219 }

添加修改记事类 AddMemoirActivity.java

  1 package com.memoir.activity;
  2 
  3 import java.util.ArrayList;
  4 import com.memoir.R;
  5 import com.memoir.common.DateUtils;
  6 import com.memoir.common.GUID;
  7 import com.memoir.common.Tools;
  8 import com.memoir.configs.MemoirConfig;
  9 import com.memoir.entity.Memoir;
 10 
 11 import net.tsz.afinal.FinalActivity;
 12 import net.tsz.afinal.FinalDb;
 13 import net.tsz.afinal.annotation.view.ViewInject;
 14 
 15 import android.os.Bundle;
 16 import android.view.KeyEvent;
 17 import android.view.View;
 18 import android.widget.Button;
 19 import android.widget.EditText;
 20 import android.widget.Toast;
 21 import android.content.Intent;
 22 
 23 public class AddMemoirActivity extends FinalActivity {
 24     
 25     @ViewInject(id=R.id.edtTitle) EditText edtTitle;
 26     @ViewInject(id=R.id.edtMemoir) EditText edtMemoir;
 27     @ViewInject(id=R.id.btnSave,click="btnSaveClick") Button btnSave;
 28     @ViewInject(id=R.id.btnCancel,click="btnCancelClick") Button btnCancel;
 29 
 30     ArrayList<String> al = new ArrayList<String>();
 31     boolean isSuccess = false;
 32     
 33     @Override
 34     public void onCreate(Bundle savedInstanceState) {
 35         super.onCreate(savedInstanceState);
 36         super.setTitle("添加杂记");
 37         
 38         setContentView(R.layout.addmemoir);
 39         //接收数据
 40         if(this.getIntent().getStringArrayListExtra("data") !=null){ 
 41             al  = this.getIntent().getStringArrayListExtra("data"); 
 42             if (al.size()>0){
 43                 edtTitle.setText(nullToString(al.get(1)));
 44                 edtMemoir.setText(nullToString(al.get(2)));
 45             }
 46         }
 47 
 48     }
 49     
 50     /**
 51      * 
 52      * @param v
 53      */
 54     public void btnSaveClick(View v){
 55         String checkStr = checkForm();
 56         if ("".equals(checkStr)){
 57             String title = nullToString(edtTitle.getText()).trim();
 58             String memoir = nullToString(edtMemoir.getText()).trim();
 59             
 60             String createDate = "";
 61             String lstModDt = "";
 62             String ID="";
 63             if (!"".equals(nullToString(al.get(0)))){
 64                 ID = nullToString(al.get(0));
 65                 createDate = nullToString(al.get(3));
 66                 
 67                 if (!title.equals(nullToString(al.get(1)))|| !memoir.equals(nullToString(al.get(2)))){
 68                     lstModDt = Tools.nowDate();
 69                 }else{
 70                     lstModDt = nullToString(al.get(4));
 71                 }
 72             }else{
 73                 ID = GUID.newGUID();
 74                 createDate = DateUtils.getCurrDateStr();
 75                 lstModDt = Tools.nowDate();
 76             }
 77             
 78             try {
 79                 if (!title.equals(nullToString(al.get(1)))|| !memoir.equals(nullToString(al.get(2)))){
 80                     FinalDb fd = FinalDb.create(this,MemoirConfig.DB_NAME);
 81                     Memoir memo = new Memoir();
 82                     memo.setId(ID);
 83                     memo.setTitle(title);
 84                     memo.setMemoir(memoir);
 85                     memo.setCreateDate(createDate);
 86                     memo.setLstModDate(lstModDt);
 87     
 88                     if (!"".equals(nullToString(al.get(1)))){
 89                         fd.update(memo);
 90                     }else{
 91                         fd.save(memo);//此方法保存数据 通过源码 看出是把类中的属性转换为字段 进行拼接建表语句和插入数据
 92                     }
 93                     
 94     //                al.clear();
 95     //                al.add(0, ID);
 96     //                al.add(1, title);
 97     //                al.add(2, memoir);
 98     //                al.add(3, createDate);
 99     //                al.add(4, lstModDt);
100                     isSuccess = true;
101                 }
102                 resultData();
103                 
104             } catch (Exception e) {
105                 // TODO: handle exception
106                 showToast("添加失败!");
107             }
108             
109         }else{
110             showToast(checkStr);
111         }
112     }
113     
114     public String checkForm(){
115         String str = "";
116         if ("".equals(nullToString(edtTitle.getText()))){
117             str = "标题不能为空!";
118         }else if("".equals(nullToString(edtMemoir.getText()))){
119             str = "内容不能为空!";
120         }
121         
122         return str;
123     }
124     
125     /**
126      * 转换
127      * @param str
128      * @return
129      */
130     public String nullToString(Object obj){
131         return obj==null?"":obj.toString();
132     }
133     
134     /**
135      * 
136      * @param v
137      */
138     public void btnCancelClick(View v){
139         resultData();
140     }
141     
142      private void showToast(String strMsg){  
143             Toast.makeText(this, strMsg, Toast.LENGTH_LONG).show();  
144         }  
145      
146     /**
147      * Back键监听
148      */
149     @Override
150     public boolean onKeyDown(int keyCode, KeyEvent event)
151     {
152         if (keyCode == KeyEvent.KEYCODE_BACK)
153         {
154             resultData();
155         }
156         
157         return false;
158     }
159         
160     private void resultData(){
161         Intent intent = new Intent();
162         if (isSuccess){
163 //            intent.putStringArrayListExtra("data",al); 
164             
165             setResult(RESULT_OK, intent);
166         }
167 
168         this.finish();
169 //        SysApplication.getInstance().moveActivity(this);
170     }
171     
172 }

 

  • 使用@ViewInject一定要继承FinalActivity类 否则无效
  • 运用中最新的0.5版本绑定事件有问题 此demo用0.3.3版本

附件源码下载

Memoir.rar

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM