日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/1/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android+final+框架,使用android快速开发框架afinal 开发android应用程序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先介紹下afinal開(kāi)發(fā)框架:

1、afinal是android中一個(gè)設(shè)計(jì)小巧的android應(yīng)用開(kāi)發(fā)框架

2、里面包含了一個(gè)orm框架,無(wú)需配置任何文件可以對(duì)android的sqlite進(jìn)行增刪改查操作。

3、里面包含了一個(gè)ioc框架,自動(dòng)綁定android布局文件和代碼的控件,同時(shí)支持對(duì)事件的綁定功能

4、里面包含了一個(gè)輕量級(jí)的http框架,對(duì)http請(qǐng)求只要一行代碼就可以完成。

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

這邊文章主要介紹了afinal的ioc和orm功能:

我們要實(shí)現(xiàn)的功能很簡(jiǎn)單,我們可以添加數(shù)據(jù)到數(shù)據(jù)庫(kù)sqlite,然后從數(shù)據(jù)庫(kù)中查詢所有的數(shù)據(jù)到listview上顯示,可以再listview修改和刪除數(shù)據(jù)。完成基本的增刪改查功能。

廢話少說(shuō),我們首先來(lái)建立一個(gè)mode類,很簡(jiǎn)單,就三個(gè)屬性,代碼如下:

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 ...

}

注意:當(dāng)你的對(duì)象中有id 或者 _id 這個(gè)屬性,可以不用配置@Id(column="myId");

接下來(lái),我們看一下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?探索者網(wǎng)絡(luò)工作室(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("添加數(shù)據(jù)");

}

}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("更新數(shù)據(jù)");

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 探索者網(wǎng)絡(luò)工作室(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("添加數(shù)據(jù)");

}

}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("更新數(shù)據(jù)");

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,也不需要對(duì)view進(jìn)行setOnClickListener操作,完全注解配置。使得代碼更加簡(jiǎn)潔。

在數(shù)據(jù)庫(kù)操作中,我們只需要實(shí)例化FinalDb對(duì)象,通過(guò)FinalDB可以對(duì)user進(jìn)行增加、刪除、修改等操作。

有圖有真相:

轉(zhuǎn)載請(qǐng)注明出處。

總結(jié)

以上是生活随笔為你收集整理的android+final+框架,使用android快速开发框架afinal 开发android应用程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。