package com.andbase.demo.activity; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.ab.activity.AbActivity; import com.ab.db.storage.AbSqliteStorage; import com.ab.db.storage.AbSqliteStorageListener.AbDataDeleteListener; import com.ab.db.storage.AbSqliteStorageListener.AbDataInsertListener; import com.ab.db.storage.AbSqliteStorageListener.AbDataSelectListener; import com.ab.db.storage.AbSqliteStorageListener.AbDataUpdateListener; import com.ab.db.storage.AbStorageQuery; import com.ab.util.AbToastUtil; import com.ab.view.titlebar.AbTitleBar; import com.andbase.R; import com.andbase.demo.adapter.UserDBListAdapter; import com.andbase.demo.dao.UserInsideDao; import com.andbase.demo.model.LocalUser; import com.andbase.global.MyApplication; /** * 名称:DBObjectActivity * 描述:数据库演示andbase的对象化存储 * @author 还如一梦中 * @date 2011-12-13 * @version */ public class DBObjectActivity extends AbActivity { private MyApplication application; //列表适配器 private UserDBListAdapter myListViewAdapter = null; //列表数据 private List<LocalUser> userList = null; private ListView mListView = null; //定义数据库操作实现类 private UserInsideDao userDao = null; //每一页显示的行数 public int pageSize = 10; //当前页数 public int pageNum = 1; //总条数 public int totalCount = 0; //分页栏 private LinearLayout mListViewForPage; //总条数和当前显示的几页 public TextView total, current; //上一页和下一页的按钮 private Button preView,nextView; //数据库操作类 private AbSqliteStorage mAbSqliteStorage = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setAbContentView(R.layout.db_sample); AbTitleBar mAbTitleBar = this.getTitleBar(); mAbTitleBar.setTitleText(R.string.db_object_name); mAbTitleBar.setLogo(R.drawable.button_selector_back); mAbTitleBar.setTitleBarBackground(R.drawable.top_bg); mAbTitleBar.setTitleTextMargin(10, 0, 0, 0); mAbTitleBar.setLogoLine(R.drawable.line); application = (MyApplication)abApplication; //初始化AbSqliteStorage mAbSqliteStorage = AbSqliteStorage.getInstance(this); //初始化数据库操作实现类 userDao = new UserInsideDao(DBObjectActivity.this); userList = new ArrayList<LocalUser>(); //获取ListView对象 mListView = (ListView)this.findViewById(R.id.mListView); //分页栏 mListViewForPage = (LinearLayout) this.findViewById(R.id.mListViewForPage); //上一页和下一页的按钮 preView = (Button) this.findViewById(R.id.preView); nextView = (Button) this.findViewById(R.id.nextView); //分页栏显示的文本 total = (TextView)findViewById(R.id.total); current = (TextView)findViewById(R.id.current); //创建一个HeaderView用于向数据库中增加一条数据 View headerView = mInflater.inflate(R.layout.db_list_header,null); //加到ListView的顶部 mListView.addHeaderView(headerView); //使用自定义的Adapter myListViewAdapter = new UserDBListAdapter(this,userList); mListView.setAdapter(myListViewAdapter); //增加记录的按钮 final Button addBtn = (Button)headerView.findViewById(R.id.addBtn); //增加的字段数据 final EditText mEditText = (EditText)headerView.findViewById(R.id.add_name); addBtn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //获取用户输入的数据 String name = mEditText.getText().toString(); if(name!=null && !"".equals(name.trim())){ //增加一条数据到数据库 LocalUser u = new LocalUser(); u.setName(name); saveData(u); }else{ AbToastUtil.showToast(DBObjectActivity.this,"请输入名称!"); } } }); //上一页事件 preView.setOnTouchListener(new Button.OnTouchListener(){ @Override public boolean onTouch(View arg0, MotionEvent arg1){ switch (arg1.getAction()) { case MotionEvent.ACTION_DOWN: preView(); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; case MotionEvent.ACTION_CANCEL: break; default: break; } return true; } }); //下一页事件 nextView.setOnTouchListener(new Button.OnTouchListener(){ @Override public boolean onTouch(View arg0, MotionEvent arg1){ switch (arg1.getAction()) { case MotionEvent.ACTION_DOWN: nextView(); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; case MotionEvent.ACTION_CANCEL: break; default: break; } return true; } }); queryData(); } private void checkPageBar(){ if(userList == null || userList.size()==0){ //无数据隐藏分页栏 mListViewForPage.setVisibility(View.GONE); }else{ queryDataCount(); } } /* * 上一页 */ private void preView() { preView.setEnabled(false); preView.setBackgroundResource(R.drawable.left_press); pageNum--; current.setText("当前页:" + String.valueOf(pageNum)); userList.clear(); queryData(); } /* * 下一页 */ private void nextView() { nextView.setEnabled(false); nextView.setBackgroundResource(R.drawable.right_press); pageNum++; current.setText("当前页:" + String.valueOf(pageNum)); userList.clear(); queryData(); } /* * 文本是否可点击 */ public void checkView() { if (pageNum <= 1) { //上一页文本为不可点击状态 preView.setEnabled(false); preView.setBackgroundResource(R.drawable.left_press); //总条数小于每页显示的条数 if (totalCount <= pageSize) { //下一页文本为不可点击状态 nextView.setEnabled(false); nextView.setBackgroundResource(R.drawable.right_press); }else{ nextView.setEnabled(true); nextView.setBackgroundResource(R.drawable.right_normal); } }//总条数-当前页*每页显示的条数 <=每页显示的条数 else if (totalCount - (pageNum-1) * pageSize <= pageSize){ //下一页文本为不可点击状态,上一页变为可点击 nextView.setEnabled(false); nextView.setBackgroundResource(R.drawable.right_press); preView.setEnabled(true); preView.setBackgroundResource(R.drawable.left_normal); }else { //上一页下一页文本设置为可点击状态 preView.setEnabled(true); preView.setBackgroundResource(R.drawable.left_normal); nextView.setEnabled(true); nextView.setBackgroundResource(R.drawable.right_normal); } } public void saveData(LocalUser u){ //无sql存储的插入 mAbSqliteStorage.insertData(u, userDao, new AbDataInsertListener(){ @Override public void onSuccess(long id) { //showToast("插入数据成功id="+id); queryData(); } @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(DBObjectActivity.this,errorMessage); } }); } public void queryData(){ //查询数据 AbStorageQuery mAbStorageQuery = new AbStorageQuery(); mAbStorageQuery.setLimit(pageSize); mAbStorageQuery.setOffset((pageNum-1)*pageSize); //无sql存储的查询 mAbSqliteStorage.findData(mAbStorageQuery, userDao, new AbDataSelectListener(){ @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(DBObjectActivity.this,errorMessage); } @Override public void onSuccess(List<?> paramList) { userList.clear(); if(paramList!=null){ userList.addAll((List<LocalUser>)paramList); } myListViewAdapter.notifyDataSetChanged(); checkPageBar(); } }); } public void queryDataCount(){ //查询数据 AbStorageQuery mAbStorageQuery = new AbStorageQuery(); //无sql存储的查询 mAbSqliteStorage.findData(mAbStorageQuery, userDao, new AbDataSelectListener(){ @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(DBObjectActivity.this,errorMessage); } @Override public void onSuccess(List<?> paramList) { if(paramList!=null){ totalCount = paramList.size(); } total.setText("总条数:" +String.valueOf(totalCount)); current.setText("当前页:" + String.valueOf(pageNum)); checkView(); mListViewForPage.setVisibility(View.VISIBLE); } }); } /** * 更新数据 * 描述:TODO * @param u */ public void updateData(LocalUser u){ //无sql存储的更新 mAbSqliteStorage.updateData(u, userDao, new AbDataUpdateListener(){ @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(DBObjectActivity.this,errorMessage); } @Override public void onSuccess(int rows) { queryData(); } }); } /** * * 描述:根据ID查询数据 * @param id * @return */ public void queryDataById(int id){ //条件 AbStorageQuery mAbStorageQuery = new AbStorageQuery(); mAbStorageQuery.equals("_id", String.valueOf(id)); //无sql存储的查询 mAbSqliteStorage.findData(mAbStorageQuery, userDao, new AbDataSelectListener(){ @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(DBObjectActivity.this,errorMessage); } @Override public void onSuccess(List<?> paramList) { if(paramList!=null && paramList.size()>0){ LocalUser u = (LocalUser)paramList.get(0); AbToastUtil.showToast(DBObjectActivity.this,"结果:_id:"+u.get_id()+",name:"+u.getName()); } } }); } /** * * 描述:删除数据 * @param id */ public void delData(int id){ //条件 AbStorageQuery mAbStorageQuery = new AbStorageQuery(); mAbStorageQuery.equals("_id", String.valueOf(id)); //无sql存储的删除 mAbSqliteStorage.deleteData(mAbStorageQuery, userDao, new AbDataDeleteListener(){ @Override public void onSuccess(int rows) { queryData(); } @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(DBObjectActivity.this,errorMessage); } }); } @Override public void finish() { //必须要释放 mAbSqliteStorage.release(); super.finish(); } }