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

首先介绍下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类,很简单,就三个属性,代码如下:

packagecom.yangfuhai.afinal;

importnet.tsz.afinal.annotation.sqlite.Id;

publicclassUser {

@Id(column="myId")

privateintuserId;

privateString name;

privateString email;

//getter setter ...

}

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

packagecom.yangfuhai.afinal;

importjava.util.ArrayList;

importjava.util.List;

importnet.tsz.afinal.FinaActivity;

importnet.tsz.afinal.FinalDb;

importnet.tsz.afinal.annotation.view.ViewInject;

importandroid.os.Bundle;

importandroid.text.TextUtils;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.widget.BaseAdapter;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.ListView;

importandroid.widget.TextView;

importandroid.widget.Toast;

/**

* @title 这是 afinal demo

* @description 描述

* @company 探索者网络工作室(www.tsz.net)

* @author michael Young (www.YangFuhai.com)

* @version 1.0

* @created 2012-10-17

*/

publicclassAfinalDemoActivityextendsFinaActivity {

@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 mListViewData =newArrayList();

FinalDb db;

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

db = FinalDb.creat(this);

listView.setAdapter(mListAdapter);

}

publicvoidbtnClick(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 =newUser();

user.setEmail(email);

user.setName(name);

if(v.getTag()!=null){

intid = 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("添加数据");

}

}elseif(v == BtnRefresh){

mListViewData.clear();

mListViewData.addAll(db.findAll(User.class));

mListAdapter.notifyDataSetChanged();

}

}

privateView.OnClickListener itemButtonClick =newView.OnClickListener() {

publicvoidonClick(View v) {

Object obj = v.getTag();

if(objinstanceofInteger){

intpositon = 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();//刷新列表

}elseif(v.getId() == R.id.item_btn_update){//listview的更新按钮

edit_email.setText(user.getEmail());

edit_name.setText(user.getName());

BtnAdd.setText("更新数据");

BtnAdd.setTag(user.getUserId());

}

}

}

};

privatevoidshowToast(String strMsg){

Toast.makeText(this, strMsg,0).show();

}

privateBaseAdapter mListAdapter =newBaseAdapter() {

publicView getView(intposition, 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);

returnitem;

}

publiclonggetItemId(intposition) {

returnposition;

}

publicObject getItem(intposition) {

returnmListViewData.get(position);

}

publicintgetCount() {

returnmListViewData.size();

}

};

}

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 mListViewData = new ArrayList();

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

有图有真相:

1350536113_2562.png

转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值