使用android快速開發框架afinal 開發android應用程序

首先介紹下afinal開發框架:
1、afinal是android中一個設計小巧的android應用開發框架
2、裡面包含瞭一個orm框架,無需配置任何文件可以對android的sqlite進行增刪改查操作。
3、裡面包含瞭一個ioc框架,自動綁定android佈局文件和代碼的控件,同時支持對事件的綁定功能
4、裡面包含瞭一個輕量級的http框架,對http請求隻要一行代碼就可以完成。

 這邊文章主要介紹瞭afinal的ioc和orm功能:
我們要實現的功能很簡單,我們可以添加數據到數據庫sqlite,然後從數據庫中查詢所有的數據到listview上顯示,可以再listview修改和刪除數據。完成基本的增刪改查功能。

廢話少說,我們首先來建立一個mode類,很簡單,就三個屬性,代碼如下:
[java] 
package com.yangfuhai.afinal; 
 
import net.tsz.afinal.annotation.sqlite.Id; 
 
public class User { 
 
    @Id(column="myId") 
    private int userId; 
     
    private String name; 
    private String email; 
     
     
    //getter setter … 
     
     

註意:當你的對象中有id 或者 _id 這個屬性,可以不用配置@Id(column="myId");
接下來,我們看一下activity的代碼:
[java]
package com.yangfuhai.afinal; 
 
import java.util.ArrayList; 
import java.util.List; 
 
import net.tsz.afinal.FinaActivity; 
import net.tsz.afinal.FinalDb; 
import net.tsz.afinal.annotation.view.ViewInject; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
 
/**
 * @title 這是 afinal demo
 * @description 描述
 * @company 探索者網絡工作室(www.tsz.net)
 * @author michael Young (www.YangFuhai.com)
 * @version 1.0
 * @created 2012-10-17
 */ 
public class AfinalDemoActivity extends FinaActivity { 
     
    @ViewInject(id=R.id.btn_add,click="btnClick") Button BtnAdd; 
    @ViewInject(id=R.id.btn_refresh,click="btnClick") Button BtnRefresh; 
     
    @ViewInject(id=R.id.listView,itemClick="itemClick") ListView listView; 
     
    @ViewInject(id=R.id.edit_name) EditText edit_name; 
    @ViewInject(id=R.id.edit_email) EditText edit_email; 
     
    List<User> mListViewData = new ArrayList<User>(); 
     
    FinalDb db; 
     
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        db = FinalDb.creat(this); 
        listView.setAdapter(mListAdapter); 
    } 
     
    public void btnClick(View v){ 
        if(v == BtnAdd){ 
            String name = edit_name.getText().toString(); 
            String email = edit_email.getText().toString(); 
             
            if(!TextUtils.isEmpty(name) && !TextUtils.isEmpty(email)){ 
                User user = new User(); 
                user.setEmail(email); 
                user.setName(name); 
                 
                if(v.getTag()!=null){ 
                    int id = Integer.valueOf(v.getTag().toString()); 
                    user.setUserId(id); 
                    db.update(user); 
                    showToast("更新成功"); 
                     
                }else{ 
                    db.save(user); 
                    showToast("添加成功"); 
                } 
                 
                edit_name.setText(""); 
                edit_email.setText(""); 
                BtnAdd.setTag(null); 
                BtnAdd.setText("添加數據"); 
                 
            } 
        }else if(v == BtnRefresh){ 
            mListViewData.clear(); 
            mListViewData.addAll(db.findAll(User.class)); 
            mListAdapter.notifyDataSetChanged(); 
        } 
    } 
     
     
    private View.OnClickListener itemButtonClick = new View.OnClickListener() { 
        public void onClick(View v) { 
            Object obj = v.getTag(); 
            if(obj instanceof Integer){ 
                int positon = Integer.valueOf(obj.toString()); 
                User user = mListViewData.get(positon); 
                if(v.getId() == R.id.item_btn_del){ //listview的刪除按鈕 
                     
//                  db.deleteById(User.class, user.getUserId());//也可以用這種方式刪除 
                    db.deleteById(user); 
                     
                    showToast("刪除成功"); 
                    BtnRefresh.performClick();//刷新列表 
                     
                }else if(v.getId() == R.id.item_btn_update){//listview的更新按鈕 
                    edit_email.setText(user.getEmail()); 
                    edit_name.setText(user.getName()); 
                     
                    BtnAdd.setText("更新數據"); 
                    BtnAdd.setTag(user.getUserId()); 
                } 
            } 
        } 
    }; 
     
    private void showToast(String strMsg){ 
        Toast.makeText(this, strMsg, 0).show(); 
    } 
     
     
     
    private BaseAdapter mListAdapter = new BaseAdapter() { 
         
        public View getView(int position, View convertView, ViewGroup parent) { 
            View item = View.inflate(AfinalDemoActivity.this, R.layout.listitem, null); 
             
            TextView tv_id = (TextView) item.findViewById(R.id.item_id); 
            TextView tv_name = (TextView) item.findViewById(R.id.item_name); 
            TextView tv_email = (TextView) item.findViewById(R.id.item_email); 
             
            Button btn_del = (Button) item.findViewById(R.id.item_btn_del); 
            Button btn_update = (Button) item.findViewById(R.id.item_btn_update); 
             
            User user= mListViewData.get(position); 
            tv_id.setText("id:"+user.getUserId()+""); 
            tv_name.setText("名字:"+user.getName()); 
            tv_email.setText("郵箱:"+user.getEmail()); 
             
            btn_del.setTag(position); 
            btn_update.setTag(position); 
            btn_del.setOnClickListener(itemButtonClick); 
            btn_update.setOnClickListener(itemButtonClick); 
             
            return item; 
        } 
         
        public long getItemId(int position) { 
            return position; 
        } 
         
        public Object getItem(int position) { 
            return mListViewData.get(position); 
        } 
         
        public int getCount() { 
            return mListViewData.size(); 
        } 
    }; 
     
     
     

在上面的列子中,我們不用findviewByid,也不需要對view進行setOnClickListener操作,完全註解配置。使得代碼更加簡潔。
在數據庫操作中,我們隻需要實例化FinalDb對象,通過FinalDB可以對user進行增加、刪除、修改等操作。

有圖有真相:

You May Also Like