现在的位置: 首页 > 综合 > 正文

使用android快速开发框架afinal 开发android应用程序

2013年05月31日 ⁄ 综合 ⁄ 共 4228字 ⁄ 字号 评论关闭

首先介绍下afinal开发框架:

1、afinal是android中一个设计小巧的android应用开发框架

2、里面包含了一个orm框架,无需配置任何文件可以对android的sqlite进行增删改查操作。

3、里面包含了一个ioc框架,自动绑定android布局文件和代码的控件,同时支持对事件的绑定功能

4、里面包含了一个轻量级的http框架,对http请求只要一行代码就可以完成。

afinal源码地址 http://code.google.com/p/afinal/

这边文章主要介绍了afinal的ioc和orm功能:

我们要实现的功能很简单,我们可以添加数据到数据库sqlite,然后从数据库中查询所有的数据到listview上显示,可以再listview修改和删除数据。完成基本的增删改查功能。

废话少说,我们首先来建立一个mode类,很简单,就三个属性,代码如下:

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的代码:

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进行增加、删除、修改等操作。

有图有真相:

源码下载:

http://download.csdn.net/detail/michael_yy/4659620

转载请注明出处。

【上篇】
【下篇】

抱歉!评论已关闭.