总的布局文件
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
</LinearLayout>
每一个条目的布局文件
item_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="名字"
android:textSize="25sp"
/>
<LinearLayout
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_salary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="号码"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="工资"
android:textSize="25sp"
/>
</LinearLayout>
</RelativeLayout>
逻辑代码
MainActivity.java
public class MainActivity extends Activity {
List<Person> personList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
personList = new ArrayList<Person>();
//把数据库的数据查询出来
MyOpenHelper oh = new MyOpenHelper(this, "person.db", null, 1);
SQLiteDatabase db = oh.getWritableDatabase();
Cursor cursor = db.query("person", null, null, null, null, null, null, null);
while(cursor.moveToNext()){
String _id = cursor.getString(0);
String name = cursor.getString(1);
String phone = cursor.getString(2);
String salary = cursor.getString(3);
Person p = new Person(_id, name, phone, salary);
personList.add(p);
}
ListView lv = (ListView) findViewById(R.id.lv);
lv.setAdapter(new MyAdapter());
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return personList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
//由系统调用,获取一个View对象,作为ListView的条目
//position本次getView方法调用返回的view对象,在listView中处于第几个条目,convertview是缓存机制
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Person p = personList.get(position);
// TODO Auto-generated method stub
//TextView tv = new TextView(MainActivity.this);
//Person p = personList.get(position);
//System.out.println("position" + position);
//tv.setText(p.toString());
System.out.println("getView()调用" + position);
View v = null;
//判断是否条目是否缓存
if(convertView == null){
//如果没缓存填充新的对象,
v = View.inflate(MainActivity.this, R.layout.item_listview, null);
}else{
v = convertView;
}
//方法1:把布局文件填充成一个view对象
//v = View.inflate(MainActivity.this, R.layout.item_listview, null);
//方法2:获取布局填充器对象
//LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
//View v2 = inflater.inflate(R.layout.item_listview, null);
//方法3:
LayoutInflater inflater2 = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE );
View v3 = inflater2.inflate(R.layout.item_listview, null);
TextView tv_name = (TextView) v.findViewById(R.id.tv_name);
TextView tv_phone = (TextView) v.findViewById(R.id.tv_phone);
TextView tv_salary = (TextView) v.findViewById(R.id.tv_salary);
tv_name.setText(p.getName());
tv_phone.setText(p.getPhone());
tv_salary.setText(p.getSalary());
return v;
}
}