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


有图有真相:

使用android快速开发框架afinal 开发android应用程序_第1张图片



源码下载:

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


转载请注明出处。



更多相关文章

  1. android与linux内核对比--《Android系统源代码情景分析》试读
  2. flutter与android混合开发一:Android原生项目创建flutter模块、An
  3. Android学习札记13:为什么更推荐使用Parcelable来在Activity间传
  4. pandaboard ES学习之旅——5 Android Linux内核源代码下载与编译
  5. Android的快速开发框架afinal
  6. windows下载android源代码

随机推荐

  1. 【Android】使用MediaCodec硬编码实现视
  2. Android快速上手
  3. Android获取设备信息
  4. 【Android】使用MediaCodec硬编码实现视
  5. Android窗口为弹出框样式
  6. android 系统自带主题样式及自定义主题样
  7. ListView 常用属性
  8. Android安卓41个开源项目
  9. 有关XML的点击状态背景图的设置
  10. 改写ListView样式