用布局填充器填充ListView(继承BaseAdapter)
2015-12-27 11:25
323 查看
主要代码
MyDBHelper
布局文件
person类
package com.example.test; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class ListData2 extends Activity { private List<Person> personList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_data); MyDBHelper helper = new MyDBHelper(this); SQLiteDatabase db = helper.getWritableDatabase(); Cursor cursor = db.rawQuery("select _id,name,age from person", null); // Cursor cursor = db.rawQuery("select name,age from person", null); personList = new ArrayList<Person>(); while (cursor.moveToNext()) { int num=cursor.getInt(0); String name = cursor.getString(1); String age = cursor.getString(2); Person person = new Person(num,name, age); personList.add(person); } ListView list = (ListView) findViewById(R.id.list); list.setAdapter(new MyAdapter()); } class MyAdapter extends BaseAdapter { //这个可以不实现 @Override public Object getItem(int position) { return null; } //这个可以不实现 @Override public long getItemId(int position) { return 0; } @Override public int getCount() { return personList.size(); } @Override public View getView(int position, View convertView, ViewGroup parent) { // listview的条目,一旦被划出屏幕,并不会立刻销毁,而是缓存在内存中,如果系统内存不足,才会销毁 // convertView:当条目被列出屏幕时,该条目会被缓存起来,当getview方法再次调用时, // 缓存条目就会作为convertView传入getView方法中 // View v=null; if(convertView==null){ // // ****三种填充布局方式*** // // 1.拿到布局填充器对象 // LayoutInflater li=LayoutInflater.from(ListData2.this); // v=li.inflate(R.layout.list_data_item,null); // 2.通过获取系统服务拿到布局填充器对象 // LayoutInflater li= (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); // v=li.inflate(R.layout.list_data_item,null); // 3.填充布局 v=View.inflate(ListData2.this,R.layout.list_data_item,null); } else{ v=convertView; } TextView num= (TextView) v.findViewById(R.id.num); TextView name= (TextView) v.findViewById(R.id.name); TextView age= (TextView) v.findViewById(R.id.age); num.setText(personList.get(position).getNum()+""); name.setText(personList.get(position).getName()); age.setText(personList.get(position).getAge()); return v; } } }
MyDBHelper
package com.example.test; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * Created by joy on 2015/12/26. */ public class MyDBHelper extends SQLiteOpenHelper { private final static String DB_NAME="person.db"; public MyDBHelper(Context context) { //第一个参数上下文,第二个参数数据库名,第三个参数游标工厂,第四个参数数据库版本号 //数据库文件保存在data/data/包名/databases/person.db super(context, DB_NAME, null, 2); } @Override public void onCreate(SQLiteDatabase db) { //数据库创建时调用 db.execSQL("create table person(_id integer primary key autoincrement,name varchar(20),age varchar(2))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //数据库升级时调用 Log.e("gjj","数据库更新了"); } }
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10sp"> <TextView android:id="@+id/num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="编号1" android:textSize="18sp" android:layout_centerVertical="true"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_alignParentRight="true"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" android:textSize="18sp" /> <TextView android:id="@+id/age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="年龄" android:textSize="18sp" /> </LinearLayout> </RelativeLayout>
person类
package com.example.test; /** * Created by joy on 2015/12/24. */ public class Person { private int num; private String name; private String age; public String getName() { return name; } public String getAge() { return age; } public int getNum() { return num; } public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setNum(int num) { this.num = num; } public Person(String name, String age) { this.name = name; this.age = age; } public Person(int num, String name, String age) { this.num = num; this.name = name; this.age = age; } @Override public String toString() { return name + ", " + age; } }
相关文章推荐
- Android 获取手机联系人实例代码详解
- VS使用Sublime Text 主题
- Win10系统下软件UI显示不完整解决方案
- ServerSAN解析(三):StoreVirtual存储软硬件完全解耦
- PremiumSoft Navicat for MySQL Enterprise Edition v8.0.27 注册码
- ServerSAN解析(三):StoreVirtual存储软硬件完全解耦
- MyEclipse激活步骤
- DHCP源码分析_子模块划分
- php学习日记第十一棒(计算器案例)
- php使用odbc执行复杂函数遇到的问题,sql语句直接在sqlserver数据库中运行有结果,使用php总是为空
- 【Java并发编程实战】----- AQS(三):阻塞、唤醒:LockSupport
- IntelliJ IDEA中怎样使用JUnit4
- 尼科彻斯定理
- NOI[2001] 炮兵阵地
- ServerSAN解析(四):FusionStorage存储与计算分合灵活部署
- ServerSAN解析(四):FusionStorage存储与计算分合灵活部署
- 总结报告
- USACO Cow Tours
- Android内存优化之——static使用篇
- 数据库连接池