填充ListView(继承BaseAdapter)
2015-12-27 10:29
393 查看
主要代码
MyDBHelper
布局文件
person类
package com.example.test; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; 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 ListData 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 name,age from person", null); personList = new ArrayList<Person>(); while (cursor.moveToNext()) { String name = cursor.getString(0); String age = cursor.getString(1); Person person = new Person(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) { System.out.println(position); /** * View v=null; * if(convertView==null){ * TextView textView=new TextView(ListData.this); * textView.setText(personList.get(position).toString()); * textView.setTextSize(18); * v=textView; * }else{ * v=convertView; * } * 这样编写是不对的 * 因为当这个listview滑动的时候会缓存很多个textView,而当listview要获取他的缓存时 * 不能确定要获取哪一个缓存,只能是随机获取一个 * 所以正确的应该是 * * */ TextView textView = new TextView(ListData.this); textView.setText(personList.get(position).toString()); textView.setTextSize(18); return textView; } } }
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>
person类
package com.example.test; /** * Created by joy on 2015/12/24. */ public class Person { private String name; private String age; public String getName() { return name; } public String getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public Person(String name, String age) { this.name = name; this.age = age; } @Override public String toString() { return name + ", " + age; } }
相关文章推荐
- 厦门Uber优步司机奖励政策(12月21日-12.27日)
- [Python]sqlite3二进制文件存储问题(BLOB)(You must not use 8-bit bytestrings unless you use a text_factory...)
- 三层小总结
- ubuntu中文语言环境下把系统中文文件夹更改回英文文件夹
- 多功能PCIE交换机之四:非透明桥NTB
- tomcat编码格式与jsp编码格式不一致,导致页面标题乱码
- SQLServer 维护脚本分享(09)相关文件读取
- SQL语句,建立索引和视图,接上文
- SublimeText自带格式化代码功能之reindent
- 初识C#
- linux常用命令
- 用scrollview显示多数据
- 博弈树(转载)
- breakpoints、lldb 和 chisel 的使用
- c++标准14取消decltype推算函数返回类型
- android-xml文件布局
- Linux命令学习总结:hexdump
- 新浪博客艾尔森
- 语录
- Sexy Beach PR 汉化补丁+新手教程