1.DbOpenHelper

package dbOpenHelper;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* Created by Administrator on 2014/8/25.
*/
public class DbOpenHelper extends SQLiteOpenHelper { public DbOpenHelper(Context context)
{
//Context 上下文
//name 数据库名
//CursorFactory 游标工厂模式 当为null时 使用默认值
//version 数据库版本 版本号从1开始
super(context, "person.db", null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
//create table person(id integer primary key autoincrement,name varchar(20),age int,phone varchar(11))
String sql = "create table person(id integer primary key autoincrement,name varchar(20),int age,phone varchar(11))";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}

2.entity

package domain;

/**
* Created by Administrator on 2014/8/25.
*/
public class Person {
private int id;
private String name;
private int age;
private String phone; public Person(){} public Person(int id, String name, int age, String phone) {
this.id = id;
this.name = name;
this.age = age;
this.phone = phone;
} public Person(int id, String name, String phone) {
this.id = id;
this.name = name;
this.phone = phone;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
} @Override
public String toString() {
return "个人信息{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
'}';
}
}

3.DAO

package dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import dbOpenHelper.DbOpenHelper;
import domain.Person; import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2014/8/25.
*/
public class PersonDao {
private DbOpenHelper helper; public PersonDao(Context context)
{
helper = new DbOpenHelper(context);
} public void add(Person p)
{
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "insert into person(name,phone) values(?,?)";
db.execSQL(sql,new Object[]{p.getName(),p.getPhone()});
db.close();
} public void update(Person p)
{
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "update person set phone=? where name=?";
db.execSQL(sql,new Object[]{p.getPhone(),p.getName()});
db.close();
} public void delete(String name)
{
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "delete from person where name=?";
db.execSQL(sql,new Object[]{name});
db.close();
} public Person findByName(String name)
{
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "select * from person where name=?";
Cursor cursor = db.rawQuery(sql,new String[]{name});
Person p = null;
while(cursor.moveToFirst())
{
int id = cursor.getInt(cursor.getColumnIndex("id"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
p = new Person(id,name,phone);
}
db.close();
return p;
} public List<Person> findAll()
{
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "select * from person";
Cursor cursor = db.rawQuery(sql,null);
List<Person> list = new ArrayList<Person>();
while(cursor.moveToNext())
{
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
Person p = new Person(id,name,phone);
list.add(p);
}
db.close();
return list;
} }

4.item.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"> <TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="@string/id"
android:id="@+id/tv_id"
/>
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="@string/name"
android:id="@+id/tv_name"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/phone"
android:id="@+id/tv_phone"
/> </LinearLayout>

5.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">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="@string/id"
/>
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="@string/name"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/phone"
/>
</LinearLayout> <ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/list"
/> </LinearLayout>

6.mainActivity.java

package com.example.dbTest;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import dao.PersonDao;
import domain.Person;
import service.PersonAdapter; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* Created by Administrator on 2014/8/25.
*/
public class PersonListActivity extends Activity { private PersonDao dao;
private ListView lv;
private List<Person> persons; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview); lv = (ListView)this.findViewById(R.id.list);
dao = new PersonDao(this);
persons = dao.findAll();
//show();
//对单个对象绑定点击事件
lv.setOnItemClickListener(new MyItemClickListener());
show2(); } public class MyItemClickListener implements AdapterView.OnItemClickListener
{ @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListView lView = (ListView)parent;
Person p = (Person)lView.getItemAtPosition(position);
Toast.makeText(getApplicationContext(),p.getName(),0).show();
}
} private void show2() {
PersonAdapter adapter = new PersonAdapter(this,persons,R.layout.item);
lv.setAdapter(adapter);
} private void show() {
List<Person> persons = dao.findAll();
List<HashMap<String,Object>>data = new ArrayList<HashMap<String,Object>>();
for (Person p:persons)
{
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("id",p.getId());
item.put("name",p.getName());
item.put("phone",p.getPhone());
data.add(item);
}
SimpleAdapter sa = new SimpleAdapter(this,data,R.layout.item,new String[]{"id","name","phone"},new int[]{R.id.tv_id,R.id.tv_name,R.id.tv_phone});
lv.setAdapter(sa);
}
}

6.继承BaseAdapter适配器

package service;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.dbTest.R;
import domain.Person; import java.util.List; /**
* Created by Administrator on 2014/8/26.
*/
public class PersonAdapter extends BaseAdapter {
private List<Person> persons;
private int resource;
private LayoutInflater inflater; public PersonAdapter(Context context,List<Person> persons, int resource) {
this.persons = persons;
this.resource = resource;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} @Override
public int getCount() {
return persons.size();
} @Override
public Object getItem(int position) {
return persons.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null)
{
convertView = inflater.inflate(resource,null);
}
TextView idView = (TextView)convertView.findViewById(R.id.tv_id);
TextView nameView = (TextView)convertView.findViewById(R.id.tv_name);
TextView phoneView = (TextView)convertView.findViewById(R.id.tv_phone); Person p = persons.get(position); idView.setText(p.getId()+"");
nameView.setText(p.getName());
phoneView.setText(p.getPhone()); return convertView;
}
}

android ListView使用的更多相关文章

  1. android ListView 九大重要属性详细分析、

    android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...

  2. Android ListView onItemClick Not Work

    Android ListView onItemClick Not Work ListView item中有Button和RadioButton的时候,它的Item点击事件不起作用,需要设置item的属 ...

  3. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d3e3ab10c62013697408 作者:黄宁源 一,背景 Recy ...

  4. Android ListView 常用技巧

    Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...

  5. Android listview addHeaderView 和 addFooterView 详解

    addHeaderView()方法:主要是向listView的头部添加布局addFooterView()方法:主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加 ...

  6. Android ListView滑动过程中图片显示重复错乱闪烁问题解决

    最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...

  7. Android --ListView分页

    参考博客:Android ListView分页加载(服务端+android端)Demo 监听OnScrollListener事件 class OnListScrollListener implemen ...

  8. Android ListView ListActivity PreferenceActivity背景变黑的问题ZT

    Android ListView ListActivity PreferenceActivity背景变黑的问题 ListView在滚动时背景会变暗甚至变黑,这个要从Listview的效果说起,默认的L ...

  9. android listview去掉分割线

    1:android listview去掉分割线 1>设置android:divider="@null" 2>android:divider="#0000000 ...

  10. 【转】android ListView 几个重要属性

    android ListView 几个重要属性 分类: Android2012-03-08 19:25 19324人阅读 评论(5) 收藏 举报 listviewandroid活动javalistnu ...

随机推荐

  1. scipy线性模块liner(linalg)

    #liner import numpy as np from scipy import linalg as lg arr=np.array([[1,1],[0,1]]) matr=np.mat('[1 ...

  2. python自动化运维笔记1 —— 系统性能信息模块psutil

    一.系统基础信息模块 1.1 系统性能信息模块psutil psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率( ...

  3. idea for mac 最全快捷键整理

    一.Mac键盘符号和修饰键说明 ⌘ Command ⇧Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭 ...

  4. python 抽象类与接口类

    几个类 实现的方法都一致的话 就继承同一个父类 在父类写一个公共方法 给子类使用

  5. Mysql误删表中数据与误删表的恢复方法

    由于头两天面试时被问了这样一个问题,如果某同事误删了某个表,你该怎么恢复? 当时想了一下,因为博主没有遇到过这个问题,但是也多少了解一些,所以就回答通过mysql的binlog日志进行恢复. 面试官当 ...

  6. Link-Cut Tree(LCT)&TopTree讲解

    前言: Link-Cut Tree简称LCT是解决动态树问题的一种数据结构,可以说是我见过功能最强大的一种树上数据结构了.在此与大家分享一下LCT的学习笔记.提示:前置知识点需要树链剖分和splay. ...

  7. File类总结

    1.File类是描述文件或文件夹的.File类可以用来操作文件或文件夹本身.但它不能操作文件中的数据. File( String name  )  把一个字符串封装成File对象.这个字符串可以是文件 ...

  8. C/C++ 各种进制的表示方法/ 进制前缀

    C/C++ 各种进制的表示方法/ 进制前缀 来源 https://blog.csdn.net/qq_38282836/article/details/81784112 在C/C++ 中天然的支持除10 ...

  9. Java -- JDBC 学习--使用 DBUtils

    Apache—DBUtils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdb ...

  10. Elasticsearch 基础知识要点与性能监控

    本文的来源是我翻译国外的一篇技术博客,感谢原作者Emily Chang,原文地址通过如下的知识,我们能大致学到关于ES的一些基本知识,进而对elasticsearch的性能进行监控和调优 注意elas ...