Android使用ListView将数据显示到手机屏幕上

来源:互联网 发布:linux社区论坛 知乎 编辑:程序博客网 时间:2024/04/29 15:04

下面是一个LinearLayout,里面的内容超级简单,就是一个ListView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >    <ListView        android:id="@+id/Lv"        android:layout_width="fill_parent"        android:layout_height="fill_parent" >    </ListView></LinearLayout>


为了使程序更有扩展性,我这里创建了一个model包,里面包含一个Person类,就是数据库的信息名称

package com.neusoft.ListView.model;public class Person {private String _id;private String name;private String salary;private String phone;public Person(String _id, String name, String salary, String phone) {super();this._id = _id;this.name = name;this.salary = salary;this.phone = phone;}@Overridepublic String toString() {return _id + "," + name + "," + salary+ "," + phone;}public String get_id() {return _id;}public void set_id(String _id) {this._id = _id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSalary() {return salary;}public void setSalary(String salary) {this.salary = salary;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}}
下面的这个MyOpenHelper类就是老套路了,大家都知道。他是为了创建数据库和升级数据库等等对数据库的操作的类

package com.neusoft.ListView;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class MyOpenHelper extends SQLiteOpenHelper {public MyOpenHelper(Context context) {super(context, "people.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table person(_id integer primary key autoincrement,name char(20),salary char(20),phone char(20))");}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {System.out.print("数据库升级了");}}

这是MainActivity,

package com.neusoft.ListView;import java.util.ArrayList;import java.util.List;import java.util.zip.Inflater;import android.os.Bundle;import android.R.integer;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.neusoft.ListView.model.*;public class MainActivity extends Activity {private ListView Lv;List<Person> personList;//创建一个List集合,将所有数据库中每个person加入到此集合中@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//insert();//从数据库中取出数据personList=new ArrayList<Person>();MyOpenHelper oh=new MyOpenHelper(this);SQLiteDatabase db=oh.getWritableDatabase();Cursor cursor=db.query("person",null, null, null, null, null,null);while(cursor.moveToNext()){//循环取出每个person的值String _id=cursor.getString(cursor.getColumnIndex("_id"));String name=cursor.getString(cursor.getColumnIndex("name"));String salary=cursor.getString(cursor.getColumnIndex("salary"));String phone=cursor.getString(cursor.getColumnIndex("phone"));Person p=new Person(_id, name, salary, phone);personList.add(p);//将值加入到集合中}Lv=(ListView) findViewById(R.id.Lv);//将数据显示到屏幕Lv.setAdapter(new MyAdapter());}//创建一个内部类MyAdapter,适配器,就是将数据显示到屏幕的工具。class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return personList.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) {Person p=personList.get(arg0);//第一种写法//View view=View.inflate(MainActivity.this,R.layout.item_activity, null);//第二种写法//LayoutInflater inflater=LayoutInflater.from(MainActivity.this);//View view=inflater.inflate(R.layout.item_activity, null);//第三种写法//LayoutInflater inflater2=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);//View view2=inflater2.inflate(R.layout.item_activity, null);//ListView优化View view=null;if(arg1==null)//这里是ListView的优化,有了这就话话后,我们就可以把用过了的存入缓存,避免浪费资源{view=View.inflate(MainActivity.this, R.layout.item_activity, null);}else{view=arg1;}TextView tv_name=(TextView) view.findViewById(R.id.tv_name);tv_name.setText(p.getName());TextView tv_salary=(TextView) view.findViewById(R.id.tv_salary);tv_salary.setText(p.getSalary());TextView tv_phone=(TextView) view.findViewById(R.id.tv_phone);tv_phone.setText(p.getPhone());return view;}}//刚开始插入的数据public void insert(){MyOpenHelper oh=new MyOpenHelper(this);SQLiteDatabase db=oh.getWritableDatabase();for(int i=0;i<100;i++){ContentValues values=new ContentValues();values.put("name", "张宇翔"+i);values.put("salary", "1500"+i);values.put("phone","13408"+i);db.insert("person", null, values);}}}


源码

1 0
原创粉丝点击