- 浏览: 155454 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
viking_wu:
Android POST方式提交数据 -
hsiunien:
不能正常调用 init android4.3上 是否可以 ...
Android JS双向调用 -
liaokang.java:
Apple.Chen 写道你确定这是插入排序而不是冒泡?插入排 ...
java之插入排序 -
Apple.Chen:
你确定这是插入排序而不是冒泡?
java之插入排序 -
ct19900913:
顶一个!!!
Android ContentProvider共享数据
在android应用中,数据以列表的形式显示通常是通过ListView来实现,下面是一个ListView入门的小例子
1.首先是主布局文件main.xml
2.然后是列表所要用到的布局文件,在layout目录下新建personitem.xml文件,代码如下
用到的实体bean为Person,代码如下
3.接着是Activity代码
4.业务层代码如下
5.由于用到了android的SQLite数据库,对数据库操作的工具类代码如下
首先通过单元测试往数据库中添加若干条记录,然后运行项目看到记录以列表的形式显示
1.首先是主布局文件main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="60px" android:layout_height="wrap_content" android:id="@+id/idTitle" android:text="编号" /> <TextView android:layout_width="150px" android:layout_height="wrap_content" android:layout_alignTop="@id/idTitle" android:layout_toRightOf="@id/idTitle" android:id="@+id/name" android:text="姓名" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/name" android:layout_toRightOf="@id/name" android:text="年龄" /> </RelativeLayout> <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/listView" /> </LinearLayout>
2.然后是列表所要用到的布局文件,在layout目录下新建personitem.xml文件,代码如下
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="60px" android:layout_height="wrap_content" android:id="@+id/personid" /> <TextView android:layout_width="150px" android:layout_height="wrap_content" android:layout_alignTop="@id/personid" android:layout_toRightOf="@id/personid" android:id="@+id/personname" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/personname" android:layout_toRightOf="@id/personname" android:id="@+id/personage" /> </RelativeLayout>
用到的实体bean为Person,代码如下
package com.lamp.domain; public class Person { private Integer personid = null; private String name = null; private Integer age = null; public Person() { } public Person(String name,Integer age){ this.name = name; this.age = age; } public Integer getPersonid() { return personid; } public void setPersonid(Integer personid) { this.personid = personid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "name: " + this.name + ", age:" + this.age; } }
3.接着是Activity代码
package com.lamp.db; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.SimpleCursorAdapter; import com.lamp.domain.Person; import com.lamp.service.PersonService; public class DBActivity extends Activity { private ListView listView = null; private PersonService personService = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); personService = new PersonService(this); listView = (ListView) this.findViewById(R.id.listView); List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>(); List<Person> personList = personService.getScrollData(0, 10); HashMap<String,String> map = null; for(Person person : personList){ map = new HashMap<String,String>(); map.put("personid", String.valueOf(person.getPersonid())); map.put("name", person.getName()); map.put("age", String.valueOf(person.getAge())); data.add(map); } SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.personitem, new String[] { "personid", "name", "age" }, new int[]{R.id.personid,R.id.personname,R.id.personage}); listView.setAdapter(simpleAdapter); /* * 这是通过游标在ListView控件上显示数据,需要注意的是主键字段名id应改为_id,否则会报错 Cursor cursor = personService.getRawScrollData(0, 10); SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.personitem, cursor, new String[] { "_id", "name", "age" }, new int[]{R.id.personid,R.id.personname,R.id.personage}); listView.setAdapter(simpleCursorAdapter); */ //为item选项设置监听 listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView listView = (ListView)parent; Map<String,String> map = (HashMap<String, String>)listView.getItemAtPosition(position); Log.i("DBActivity", map.get("age")); } }); } }
4.业务层代码如下
package com.lamp.service; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.lamp.domain.Person; public class PersonService { private DataBaseOpenHelper dbHelper = null; private SQLiteDatabase sqLiteDatabase = null; public PersonService(Context context) { dbHelper = new DataBaseOpenHelper(context); sqLiteDatabase = dbHelper.getWritableDatabase(); } public void save(Person person){ String sql = "insert into person(name,age) values (?,?)"; sqLiteDatabase.execSQL(sql, new Object[]{person.getName(),person.getAge()}); } //指定删除 public void delete(Integer personid){ String sql = "delete from person where personid=?"; sqLiteDatabase.execSQL(sql,new Object[]{personid}); } //批量删除 public void deletePersons(Integer... ids){ StringBuilder sb = new StringBuilder(); if(ids.length > 0){ for (int i = 0; i < ids.length; i++) { sb.append('?').append(','); } sb.deleteCharAt(sb.length()-1); String sql = "delete from person where personid in ("+ sb +")"; sqLiteDatabase.execSQL(sql,(Object[])ids); } } //更新数据 public void update(Person person){ String sql = "update person set name=?,age=? where personid=?"; sqLiteDatabase.execSQL(sql, new Object[]{person.getName(),person.getAge(),person.getPersonid()}); } //得到全部的结果集 public List<Person> getAllPersons(){ String sql = "select name,age from person"; Cursor cursor = sqLiteDatabase.rawQuery(sql, null); Person person = null; List<Person> personList = new ArrayList<Person>(); while(cursor.moveToNext()){ String name = cursor.getString(0); int age = cursor.getInt(1); person = new Person(name,age); personList.add(person); } return personList; } //分页取数据 public List<Person> getScrollData(Integer start, Integer size){ String sql = "select personid, name,age from person limit ?,?"; Cursor cursor = sqLiteDatabase.rawQuery(sql, new String[]{String.valueOf(start),String.valueOf(size)}); List<Person> personList = new ArrayList<Person>(); Person person = null; while(cursor.moveToNext()){ int personid = cursor.getInt(0); String name = cursor.getString(1); int age = cursor.getInt(2); person = new Person(name,age); person.setPersonid(personid); personList.add(person); } return personList; } //返回游标对象,当要在ListView中显示数据时,主键的字段名需设定为_id,否则返回的Cursor对象会出错 public Cursor getRawScrollData(Integer start, Integer size){ String sql = "select personid as _id, name,age from person limit ?,?"; return sqLiteDatabase.rawQuery(sql, new String[]{String.valueOf(start),String.valueOf(size)}); } //返回表中总记录条数 public int getCount(){ String sql = "select count(*) from person"; Cursor cursor = sqLiteDatabase.rawQuery(sql, null); if(cursor.moveToNext()){ return cursor.getInt(0); } return 0; } }
5.由于用到了android的SQLite数据库,对数据库操作的工具类代码如下
package com.lamp.service; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DataBaseOpenHelper extends SQLiteOpenHelper { private static final String DBNAME = "android"; private static final int VERSION = 1; public DataBaseOpenHelper(Context context) { super(context, DBNAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { String sql = "create table person (personid integer primary key autoincrement,name varchar(20),age integer)"; sqLiteDatabase.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { String sql = "drop table if exists person"; sqLiteDatabase.execSQL(sql); onCreate(sqLiteDatabase); } }
首先通过单元测试往数据库中添加若干条记录,然后运行项目看到记录以列表的形式显示
发表评论
-
Android JS双向调用
2011-09-08 21:29 31480Android手机中内置了一款高性能webkit内核,该内核完 ... -
Android 音频播放
2011-09-08 10:22 2057android音频播放方式有两种:一种是MediaPlayer ... -
Android 流方式发送XML数据
2011-09-06 14:10 2564我们可以采用请求参数的形式向服务器发送数据,但是当数据太大时, ... -
Android POST方式提交数据
2011-09-05 19:53 13044android虽然内置了apache的 ... -
Android ContentProvider共享数据
2011-09-02 15:09 2529ContentProvider的基本概念 a.Content ... -
Android采用Pull解析和生成xml文档
2011-08-29 19:03 2355Pull解析和Sax解析很相似,都是轻量级的解析,在Andro ... -
Android SAX解析xml文件
2011-08-28 18:39 1072andorid读取xml文件内容方法有三种 sax dom p ... -
Android之拨号器
2011-08-27 00:09 1409下面是用Android模拟拨号的小例子 首先是布局文件main ... -
Android之短信发送器
2011-08-27 00:03 1014虽然手机内置了短信发送器,但是有时候为了特定的需求项目 ...
相关推荐
### Android ListView 详解 在Android应用开发中,`ListView`是一种非常重要的UI组件,用于以列表形式展示大量的数据。它可以动态地根据数据的长度自适应显示,非常适合展示一系列的条目,例如联系人列表、消息列表...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据的列表形式,通常用于创建如联系人列表、消息列表等界面。本篇文章将详细解析ListView的使用,并提供一个简单的ListView实现示例。 首先,我们...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据集合,并且支持滚动操作。ListView的使用不仅可以节省屏幕空间,还能提供良好的用户体验。在这个源码实例中,我们将深入探讨ListView的实现,...
在Android开发中,ListView是一个非常重要的组件,它用于以列表形式展示内容,可自适应数据长度,提供良好的滚动性能和用户交互体验。ListView的核心在于它如何有效地显示和管理大量数据,通过结合适配器(Adapter)...
android listview事件详解。
Android ListView 详解,适配器adapter详解 博客地址:http://blog.csdn.net/csdnyuandaimaxuexi/article/details/48808303
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,用户可以通过滚动来查看更多的条目。本文将从初级到高级详细讲解ListView的使用,包括基础设置、复杂列表的构建、自定义适配器以及如何...
### ListView详解 #### 一、概述 在Android开发过程中,`ListView`是一个极其重要的UI组件,主要用于以列表的形式展示大量数据。与普通的`View`不同,`ListView`能够根据数据的大小自动调整显示内容的长度,非常...
在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。 ?? ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要...
在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据的列表形式。它可以根据数据的长度自动调整显示,提供良好的用户体验。以下是对ListView组件及其使用的详细解释。 首先,ListView的构成包含三...
在Android应用开发中,ListView是显示大量数据列表的常用组件,它允许用户滚动查看条目,具有很高的可定制性。本篇文章将深入解析ListView的源码,帮助开发者更好地理解和运用这个核心组件。 首先,ListView继承自...
在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据并支持滚动。它以列表形式展示内容,可以根据数据的长度动态调整显示。ListView的工作原理是通过适配器(Adapter)将数据源与ListView的视图...
android 列表视图组件 listview详解