本示例说明:
1.实现单选按钮与后台数据绑定,通过Id绑定.

2.实现显示时默认选中项控制.

3.实现修改后保存,根据id保存.

4.数据库处理使用AHibernate1.1,详见: http://blog.csdn.net/lk_blog/article/details/8201449

android使用Dialog实现复选功能与数据库结合综合实例见下篇博客:http://blog.csdn.net/lk_blog/article/details/8515403

本示例效果图:

主要代码:spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="修改学生[李坤]所在班级" /><Spinnerandroid:id="@+id/sprClass"android:layout_width="fill_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btnSave"android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="保存"/></LinearLayout>

SpinnerActivity.java

package com.tgb.lk.demo;import java.util.List;import com.tgb.lk.demo.R;
import com.tgb.lk.demo.dao.impl.ClassesDaoImpl;
import com.tgb.lk.demo.dao.impl.StudentDaoImpl;
import com.tgb.lk.demo.model.Student;
import com.tgb.lk.demo.util.CItem;import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;public class SpinnerActivity extends Activity {private Spinner sprClass;private Button btnSave;private ClassesDaoImpl clsDao;private StudentDaoImpl stuDao;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.spinner);clsDao = (clsDao == null ? new ClassesDaoImpl(this) : clsDao);stuDao = (stuDao == null ? new StudentDaoImpl(this) : stuDao);sprClass = (Spinner) findViewById(R.id.sprClass);btnSave = (Button) findViewById(R.id.btnSave);btnSave.setOnClickListener(listener);List<CItem> items = clsDao.getCItemClasses();sprClass.setAdapter(buildSpinnerAdpater(this, items));sprClass.setPrompt("请选择");// 这个演示示例修改的学号为1的学生的信息,初始化数据中学号1没有自动生成主键,实际项目中可以根据查询的结果来传入id.int classesId = stuDao.get(1).getClassesId();setSpinnerInitId(sprClass, classesId, items);// 设置Spinner默认的选中项}// 得到spinner的选中的Idpublic int getSpinnerSelectId(Spinner spinner) {CItem item = (CItem) spinner.getSelectedItem();if (item != null) {return Integer.parseInt(item.getId());}return 0;}// 设置Spinner打开时默认的选中项public void setSpinnerInitId(Spinner spinner, int initId, List<CItem> items) {// 初始化默认选项if (initId != 0) {String id = String.valueOf(initId);for (int i = 0; i < items.size(); i++) {if (id.equals(items.get(i).getId())) {spinner.setSelection(i);// 设置默认选中项break;}}}}// 构建Spinner的Adapterpublic ArrayAdapter<CItem> buildSpinnerAdpater(Context context,List<CItem> list) {ArrayAdapter<CItem> adapter = new ArrayAdapter<CItem>(context,android.R.layout.simple_spinner_item, list);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);return adapter;}private OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btnSave:stuDao = (stuDao == null ? new StudentDaoImpl(SpinnerActivity.this) : stuDao);// 这个演示示例修改的学号为1的学生的信息,初始化数据中学号1没有自动生成主键,实际项目中可以根据查询的结果来传入id.Student student = stuDao.get(1);student.setClassesId(getSpinnerSelectId(sprClass));// 设置学生所在班级的id.stuDao.update(student);// 调用AHibernate.jar中的修改方法.toastShow("保存成功!");SpinnerActivity.this.finish();// 关闭该Activity.break;default:break;}}};public void toastShow(String text) {Toast.makeText(this, text, 1000).show();}
}

其他代码:

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/btnInit"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="初始化数据" /><Buttonandroid:id="@+id/btnSpinner"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="单选示例_修改学生所在班级" /><Buttonandroid:id="@+id/btnDialog"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="多选示例_修改班级内学生" /><ListViewandroid:id="@+id/lvStudent"android:layout_width="fill_parent"android:layout_height="wrap_content" /></LinearLayout>

list.xml:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/child"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ffffff"android:orientation="horizontal" ><!-- 若想隐藏id加入此属性: android:visibility="gone",这样做有点类似于Html中hidden域 --><TextViewandroid:id="@+id/idTo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#ff0000" /><TextViewandroid:id="@+id/nameTo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingBottom="5px"android:paddingLeft="50px"android:paddingTop="5px"android:text="No data"android:textColor="#0000ff"android:textSize="20sp" /><TextViewandroid:id="@+id/classTo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingBottom="5px"android:paddingLeft="50px"android:paddingTop="5px"android:text="No data"android:textColor="#00ff00"android:textSize="20sp" /></LinearLayout>

MainActivity.java:

package com.tgb.lk.demo;import java.util.List;
import java.util.Map;import com.tgb.lk.demo.dao.impl.ClassesDaoImpl;
import com.tgb.lk.demo.dao.impl.StudentDaoImpl;
import com.tgb.lk.demo.model.Classes;
import com.tgb.lk.demo.model.Student;
import com.tgb.lk.demo.R;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;public class MainActivity extends Activity {private Button btnInit;private Button btnSpinner;private Button btnDialog;private StudentDaoImpl stuDao;private ClassesDaoImpl classDao;private ListView lv = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btnInit = (Button) findViewById(R.id.btnInit);btnSpinner = (Button) findViewById(R.id.btnSpinner);btnDialog = (Button) findViewById(R.id.btnDialog);btnInit.setOnClickListener(listener);btnSpinner.setOnClickListener(listener);btnDialog.setOnClickListener(listener);lv = (ListView) findViewById(R.id.lvStudent);showData();}// 按钮事件处理private OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {// 初始化数据case R.id.btnInit:System.out.println("btnInit");initData();// 初始化数据showData();break;case R.id.btnSpinner:// 打开spinner示例Intent sprIntent = new Intent();sprIntent.setClass(MainActivity.this, SpinnerActivity.class);startActivityForResult(sprIntent, 1);toastShow("单选示例");break;case R.id.btnDialog:// 打开Dialog示例Intent dlgIntent = new Intent();dlgIntent.setClass(MainActivity.this, DialogActivity.class);startActivityForResult(dlgIntent, 1);toastShow("多选示例");break;default:break;}}};// 数据库处理引用jar包AHibernate1.1处理.// AHibernate的详细使用教程示例地址:// http://blog.csdn.net/lk_blog/article/details/8201449// jar和源码下载地址:http://download.csdn.net/download/lk_blog/4786640private void initData() {classDao = (classDao == null ? new ClassesDaoImpl(this) : classDao);classDao.deleteAll();// 删除所有班级Classes cls1 = new Classes();cls1.setId(1);cls1.setName("四期提高班");// 调用insert(cls1)主键自增,调用insert(cls1,false)主键不自增须指定;classDao.insert(cls1, false);Classes cls2 = new Classes();cls2.setId(2);cls2.setName("五期提高班");Long clsId2 = classDao.insert(cls2, false);Classes cls3 = new Classes();cls3.setName("六期提高班");classDao.insert(cls3);// 主键自增stuDao = (stuDao == null ? new StudentDaoImpl(this) : stuDao);stuDao.deleteAll();// 删除所有学生Student student1 = new Student();student1.setId(1);student1.setName("李坤");student1.setClassesId(clsId2.intValue());stuDao.insert(student1, false);Student student2 = new Student();student2.setId(2);student2.setName("曹贵生");student2.setClassesId(clsId2.intValue());stuDao.insert(student2, false);Student student3 = new Student();student3.setName("柳波");student3.setClassesId(clsId2.intValue());stuDao.insert(student3);toastShow("初始化数据完成!");}public void toastShow(String text) {Toast.makeText(this, text, 1000).show();}private void showData() {stuDao = (stuDao == null ? new StudentDaoImpl(this) : stuDao);List<Map<String, String>> data = null;data = stuDao.queryAllStudent();SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.list,new String[] { "id", "stu_name", "cls_name" }, new int[] {R.id.idTo, R.id.nameTo, R.id.classTo });lv.setAdapter(adapter);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {showData();}}

CItem.java:

package com.tgb.lk.demo.util;
//处理单选和多选框的工具实体类
public class CItem implements Cloneable{private String id = "";private String value = "";private boolean flag = false;//控制多选框默认是否选中状态.public CItem() {}public CItem(String _ID, String _Value) {id = _ID;value = _Value;}@Overridepublic String toString() {// 这个必须重写才能保证显示正常,因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()return value;}public String getId() {return id;}public String getValue() {return value;}public void setId(String id) {this.id = id;}public void setValue(String value) {this.value = value;}public boolean getFlag() {return flag;}public void setFlag(boolean flag) {this.flag = flag;}}

StudentDaoImpl.java:

package com.tgb.lk.demo.dao.impl;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import com.tgb.lk.ahibernate.dao.impl.BaseDaoImpl;
import com.tgb.lk.demo.model.Student;
import com.tgb.lk.demo.util.CItem;
import com.tgb.lk.demo.util.DBHelper;import android.content.Context;//本文数据库处理引用jar包AHibernate1.1处理.
//AHibernate的详细使用教程示例地址: http://blog.csdn.net/lk_blog/article/details/7455992
//AHibernate源码交流地址: http://blog.csdn.net/lk_blog/article/details/7456125
//AHibernate jar包下载及源代码下载地址: http://download.csdn.net/detail/lk_blog/4222048
public class StudentDaoImpl extends BaseDaoImpl<Student> {public StudentDaoImpl(Context context) {super(new DBHelper(context), Student.class);}public List<CItem> getCItemStudents(int classId) {String sql = "select _id,name,classesid from t_student";List<Map<String, String>> list = query2MapList(sql, null);List<CItem> retList = new ArrayList<CItem>();for (Map<String, String> map : list) {CItem item = new CItem();item.setId(map.get("_id"));item.setValue(map.get("name"));item.setFlag(map.get("classesid").equals(String.valueOf(classId)) ? true : false);retList.add(item);}return retList;}// 返回一个List,List中的对象是以sql中的列的小写形式为key的Map.(本例中 _id,name,classes为key)public List<Map<String, String>> queryAllStudent() {String sql = "select s._id id, s.name stu_name,c.name cls_name from t_student s left join t_classes c on s.classesid = c._id";return super.query2MapList(sql, null);}public void deleteAll() {super.execSql("delete from t_student", null);}
}

源代码下载地址: http://download.csdn.net/detail/lk_blog/5005962

限于本人水平有限,很多地方写的并不完美,希望大家不吝赐教.如果觉得本文对您有帮助请顶支持一下,如果有不足之处欢迎留言交流,希望在和大家的交流中得到提高.

android单选控件spinner与数据库结合综合实例相关推荐

  1. Android开源控件收集整理

    一 .基本控件 TextView HTextView 一款支持TextView文字动画效果的Android组件库.GitHub - hanks-zyh/HTextView: Animation eff ...

  2. 一个Demo让你掌握Android所有控件

    一个Demo让你掌握Android所有控件 原文:一个Demo让你掌握Android所有控件 本文是转载收藏,侵删,出处:"安卓巴士"      下面给出实现各个组件的源代码: 1 ...

  3. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

  4. 【Android从零单排系列十一】《Android视图控件——日历、日期、时间选择控件》

    目录 一.日历.日期.时间组件基本介绍 二.几种常见的控件类型 1.CalendarView –日历控件 2. DatePicker –日期选择控件 3.TimePicker –时间选择控件 4.Ch ...

  5. 日历控件的android代码,Android日历控件PickTime代码实例

    Android日历控件PickTime代码实例 发布时间:2020-10-03 16:05:51 来源:脚本之家 阅读:86 作者:手撕高达的村长 最近做项目,需要设置用户的生日,所以做这样一个功能. ...

  6. 系出名门Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar, Tab

    [索引页] [×××] 系出名门Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar, Tab, Spi ...

  7. Android提供了哪些主要UI控件,Android必备:Android UI控件的了解与学习

    因为工做须要,最近一段时间,须要进行Android App开发的学习,以前简单的进行过Android的了解,对于基本的Android环境的搭建等已经有过整理,一个Android App是由一个或多个A ...

  8. Android常用控件有哪些?如何使用?

    Android常用控件介绍及使用 控件 TextView 显示文字,相当于Panel ImageView 显示图片 EditText 输入框,可编辑,可设置软键盘方式 Button 按钮,可附带图片 ...

  9. Android 画廊控件Gallary

    Android 画廊控件Gallary.将图片显示成连续的带状. package com.gallerydemo;import java.lang.reflect.Field; import java ...

最新文章

  1. 由线性回归来理解深度学习的理论基础
  2. 继穿越火线后的又一传奇:Final Approach
  3. SpringBoot基础系列-SpringCache使用
  4. bsc是指什么_掌握BSC,实现企业数字化管理
  5. [家里蹲大学数学杂志]第034期中山大学2008年数学分析考研试题参考解答
  6. ThinkPHP 3.2.3 关联模型的使用
  7. 做玫瑰花的方法 用纸_新生活新健康:春饮玫瑰花茶 最是疏肝解郁
  8. 仅需1秒!搞定100万行数据:超强Python数据分析利器
  9. lvs+keepalived实现负载均衡和高可用
  10. 广播系统可以跨服务器控制吗,数字广播系统技术参数和要求.doc
  11. Android IOS视频录制技术方案
  12. 计算机专业 外文数据库,计算机专业外文翻译原文 数据库管理系统介绍.doc
  13. QQ连连看外挂核心算法(检测点对点)
  14. java web 甘特图_基于Web开发的甘特图控件,支持Java、.Net
  15. 软件中存在的技术风险
  16. 罗技c270摄像头支持linux,罗技C270摄像头的使用心得
  17. cgb2007-京淘day02
  18. Android H5页面调起微信和支付宝付款
  19. 个人简历——英文单词
  20. 《大侦探福尔摩斯2:诡影游戏》蓝光高清720P 1080P下载[2011最新动作]

热门文章

  1. 企业如何抵御弱云密码带来的威胁
  2. Zenlayer完成近亿元A轮融资,欲构建全球连接服务平台
  3. 基础学习笔记之opencv(5):实现鼠标选定矩形框
  4. linux中变量的使用
  5. GLPI+OCS、SmartIT、LANDesk比较
  6. 和平之翼代码生成器 SMEU 版 4.0.0 RC 宝船候选版发布
  7. ElasticSearch.js源码走一个大概
  8. 基于MicroPython的家庭可燃气体泄露微信报警器
  9. 关于js的冒泡--新手踩坑案例
  10. 每个电脑都会自己的SID号和GUID号,而且不会相同。。