onewayonelife 发表于 2013-1-30 01:15:04

Android学习笔记(十三)

ListView控件
 
DBActivity
package org.wp.db;/** * 三种适配器 * ArrayAdapter<T> * SimpleAdapter * SimpleCursorAdapter */import java.util.ArrayList;import java.util.HashMap;import java.util.List;import org.wp.domain.Person;import org.wp.service.PersonService;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;public class DBActivity extends Activity {private static final String TAG = "DBActivity";private ListView listView;private PersonService personService;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ListView listView = (ListView) findViewById(R.id.listView);personService = new PersonService(this);/**// 保存数据personService.save();// 获得数据List<Person> persons = personService.getScrollData(0, 10);// 声明数据显示集合List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();// 添加标题HashMap<String, String> title = new HashMap<String, String>();title.put("personid", "编号");title.put("name", "姓名");title.put("age", "年龄");data.add(title);// 添加内容for (Person person : persons) {HashMap<String, String> hashMap = new HashMap<String, String>();hashMap.put("personid", String.valueOf(person.getPersonid()));hashMap.put("name", person.getName());hashMap.put("age", String.valueOf(person.getAge()));data.add(hashMap);}// 添加适配器SimpleAdapter simpleAdapter = new SimpleAdapter(DBActivity.this, data,R.layout.personitem,new String[] { "personid", "name", "age" }, new int[] {R.id.personid, R.id.name, R.id.age });listView.setAdapter(simpleAdapter);*/// 获得游标集Cursor cursor = personService.getCursorScrollData(0, 10);// 添加适配器SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(DBActivity.this, R.layout.personitem, cursor, new String[] {"_id", "name", "age" }, new int[] { R.id.personid,R.id.name, R.id.age });listView.setAdapter(simpleCursorAdapter);// 添加选中事件listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {ListView listView = (ListView) parent;/* * 第一种HashMap<String, String> itemData = (HashMap<String, String>) listView.getItemAtPosition(position);String personid = itemData.get("personid");String name = itemData.get("name");String age = itemData.get("age");Log.i(TAG, "className=" + view.getClass().getName());Log.i(TAG, "personid=" + personid + ",name=" + name + ",age="+ age);Log.i(TAG, "result=" + (position == id));*/// 第二种Cursor cursor = (Cursor) listView.getItemAtPosition(position);while (cursor.moveToNext()) {Log.i(TAG, "personid" + cursor.getInt(0) + ",name"+ cursor.getString(1) + ",age"+ cursor.getShort(2));}}});}} 
DataBaseOpenHelper
package org.wp.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 = "wp";private static final int VERSION = 1;public DataBaseOpenHelper(Context context) {super(context, DBNAME, null, VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table person(personid integer primary key autoincrement,name varchar(20),age integer)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("drop table if exists person");onCreate(db);}} 
PersonService
package org.wp.service;import java.util.ArrayList;import java.util.List;import org.wp.domain.Person;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;public class PersonService {private static final String TAG = "PersonService";private DataBaseOpenHelper dataBaseOpenHelper;private SQLiteDatabase database;public PersonService(Context context) {dataBaseOpenHelper = new DataBaseOpenHelper(context);}public void save() {database = dataBaseOpenHelper.getWritableDatabase();database.beginTransaction();try {database.execSQL("insert into person(name,age) values(?,?)",new Object[] { "张三", (short) 26 });database.execSQL("insert into person(name,age) values(?,?)",new Object[] { "田七", (short) 35 });database.setTransactionSuccessful();} catch (Exception e) {Log.i(TAG, e.toString());}database.endTransaction();}public List<Person> getScrollData(int startResult, int maxResult) {List<Person> persons = new ArrayList<Person>();database = dataBaseOpenHelper.getReadableDatabase();Cursor cursor = database.rawQuery("select * from person limit ?,?",new String[] { String.valueOf(startResult),String.valueOf(maxResult) });while (cursor.moveToNext()) {persons.add(new Person(cursor.getInt(0), cursor.getString(1),cursor.getShort(2)));}return persons;}public Cursor getCursorScrollData(int startResult, int maxResult) {database = dataBaseOpenHelper.getReadableDatabase();return database.rawQuery("select personid as _id,name,age from person limit ?,?",new String[] { String.valueOf(startResult),String.valueOf(maxResult) });}} 
Person
package org.wp.domain;public class Person {private Integer personid;private String name;private Short age;public Person(Integer personid, String name, Short age) {this.personid = personid;this.name = name;this.age = age;}public Person(String name, Short 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 Short getAge() {return age;}public void setAge(Short age) {this.age = age;}@Overridepublic String toString() {return "personid=" + personid + ",name=" + name + ",age=" + age;}} 
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"    ><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="40px"android:layout_height="wrap_content"android:textSize="20px"android:text="编号"android:id="@+id/personidTitle"/><TextViewandroid:layout_width="200px"android:layout_height="wrap_content"android:layout_toRightOf="@id/personidTitle"android:layout_alignTop="@id/personidTitle"android:gravity="center_horizontal"android:textSize="20px"android:text="姓名"android:id="@+id/nameTitle"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/nameTitle"android:layout_alignTop="@id/nameTitle"android:textSize="20px"android:text="年龄"android:id="@+id/ageTitle"/></RelativeLayout>    <ListViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/listView"/> </LinearLayout> 
personitem.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="40px"android:layout_height="wrap_content"android:textSize="20px"android:id="@+id/personid"/><TextViewandroid:layout_width="200px"android:layout_height="wrap_content"android:layout_toRightOf="@id/personid"android:layout_alignTop="@id/personid"android:gravity="center_horizontal"android:textSize="20px"android:id="@+id/name"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/name"android:layout_alignTop="@id/name"android:textSize="20px"android:id="@+id/age"/></RelativeLayout> 
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="org.wp.db" android:versionCode="1" android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><uses-library android:name="android.test.runner" /><activity android:name=".DBActivity" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><uses-sdk android:minSdkVersion="7" /><instrumentation android:name="android.test.InstrumentationTestRunner"android:targetPackage="org.wp.db" android:label="Tests for My App" /></manifest>  
 
 
页: [1]
查看完整版本: Android学习笔记(十三)