使用android快速開發架構afinal 開發android應用程式

來源:互聯網
上載者:User

首先介紹下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進行增加、刪除、修改等操作。

有圖有真相:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.