android ListView使用
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使用的更多相关文章
- android ListView 九大重要属性详细分析、
android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...
- Android ListView onItemClick Not Work
Android ListView onItemClick Not Work ListView item中有Button和RadioButton的时候,它的Item点击事件不起作用,需要设置item的属 ...
- 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d3e3ab10c62013697408 作者:黄宁源 一,背景 Recy ...
- Android ListView 常用技巧
Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...
- Android listview addHeaderView 和 addFooterView 详解
addHeaderView()方法:主要是向listView的头部添加布局addFooterView()方法:主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加 ...
- Android ListView滑动过程中图片显示重复错乱闪烁问题解决
最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...
- Android --ListView分页
参考博客:Android ListView分页加载(服务端+android端)Demo 监听OnScrollListener事件 class OnListScrollListener implemen ...
- Android ListView ListActivity PreferenceActivity背景变黑的问题ZT
Android ListView ListActivity PreferenceActivity背景变黑的问题 ListView在滚动时背景会变暗甚至变黑,这个要从Listview的效果说起,默认的L ...
- android listview去掉分割线
1:android listview去掉分割线 1>设置android:divider="@null" 2>android:divider="#0000000 ...
- 【转】android ListView 几个重要属性
android ListView 几个重要属性 分类: Android2012-03-08 19:25 19324人阅读 评论(5) 收藏 举报 listviewandroid活动javalistnu ...
随机推荐
- Mysql索引结构及常见索引的区别
一.Mysql索引主要有两种结构:B+Tree索引和Hash索引 Hash索引 mysql中,只有Memory(Memory表只存在内存中,断电会消失,适用于临时表)存储引擎显示支持Hash索引,是M ...
- python之Map函数
# map()函数使用举例 # 功能:map()接受一个函数f和一个或多个list,将f依次作用在list的每个元素,得到一个新的列表 # 语法:map(方法名,列表,[列表2]) # 注意:map( ...
- 云时代的IT运维面临将会有哪些变化
导读 每一次IT系统的转型,运维系统和业务保障都是最艰难的部分.在当前企业IT系统向云架构转型的时刻,运维系统再一次面临着新的挑战.所以在数据中心运维的时候,运维人员应该注意哪些问题? 在云计算时代, ...
- linux-shell系列8 netstat用法
1 查看TCP连接状态 netstat -n|awk '{print $6}'|sort|uniq -c|sort -rn netstat -n|awk '/^tcp/ {++S[$NF]};END{ ...
- MT【15】证明无理数(1)
证明:$tan3^0$是无理数. 分析:证明无理数的题目一般用反证法,最经典的就是$\sqrt{2}$是无理数的证明. 这里假设$tan3^0$是有理数,利用二倍角公式容易得到$tan6^0,tan1 ...
- jasperReport和Ireport
<!-- groovy --> <dependency> <groupId>org.codehaus.groovy</groupId> <arti ...
- SharePoint 2007 页面及用户控件
页面: <%@ Assembly Name="HP.EUSM.Self-ServiceUpgradeQuota.SPCustomAction, Version=1.0.0.0, Cul ...
- 【loj3054】【hnoi2019】鱼
题目 描述 难以描述.......慢慢看..: https://loj.ac/problem/3054 范围 $6 \le n \le 1000 , 1 \le |x| , |y| \ ...
- Spring的FactoryBean使用
Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean.工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂Bean的g ...
- 【洛谷P2384】最短乘积路径
题目大意:给定 N 个点,M 条边的有向图,边有边权,求从 1 号顶点到 N 号顶点的最短乘积路径.(经过的路径乘积最小)结果对9987取模. 乘积会爆 long long ,同时由于 dij 算法的 ...