listview入门
android ListView数据的加载是典型的mvc模式
简单ListView的实现
?
public class ListViewActivity extends Activity {
private ArrayList infos = new ArrayList();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv_info = (ListView) this.findViewById(R.id.lv_info);
PersonDao dp = new PersonDao(getApplicationContext());
this.infos = dp.findAll();
lv_info.setAdapter(new MyAdapter());
}
// 默认实现类 BaseXXX SimpleXXX DefaultXXX
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return infos.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i("MyAdapter", "获取第" + position + "位置!");
TextView tv = new TextView(getApplicationContext());
tv.setTextSize(20);
tv.setTextColor(Color.WHITE);
tv.setText(infos.get(position).toString());
return tv;
}
}
}
采用layoutInflater打气筒创建一个view对象
1.布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="id"
android:textColor="#ff0000"
android:textSize="30sp" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="name"
android:textColor="#ffffff"
android:textSize="30sp" />
<TextView
android:id="@+id/tv_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="number"
android:textColor="#66ffffff"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
2.关键代码@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i("MyAdapter", "获取第" + position + "位置!");
Person person = infos.get(position);
View view = View.inflate(getApplicationContext(),
R.layout.info_item, null);
TextView tv_id = (TextView) view.findViewById(R.id.tv_id);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
TextView tv_number = (TextView) view.findViewById(R.id.tv_number);
tv_id.setText("id:" + person.getId());
tv_name.setText("name:" + person.getName());
tv_number.setText("name:" + person.getNumber());
return view;
}