listview
主要用到三方面的东西
1接收到的数据用于显示在listview 上
2自己定义的适配器
3listview item 的布局文件
总体思路
先在布局文件中定义一个listview
<ListView
android:id="@+id/mylist"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
在java文件中声明该listview控件
listview = (ListView) findViewById(R.id.mylist);
创建一个适配器 extends BaseAdapter
适配器里面主要是
映射出来item的布局
加载数据
其中创建了一个静态的类型ViewHolder 用于和映射出来的布局文件进行绑定这样就不用每次都进行映射节约资源
private class mylistviewadapter extends BaseAdapter {
// 为自己的listview创建适配器
// 用于接收给自己的listview中放东西的容器
private List<Item> list = new ArrayList<Item>();
public void setlist(List<Item> list) {
// 创建一个接收list 的工具
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
// 反射listview item里面的布局
convertView = LayoutInflater.from(getApplication()).inflate(
R.layout.item_first, null);
TextView tv = (TextView) convertView
.findViewById(R.id.item_textview);
// 创建一个静态的类 用于绑定
holder = new ViewHolder();
holder.tv_first = tv;
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 给布局赋值
holder.tv_first.setText(list.get(position).getName() + "");
return convertView;
}
}
private static class ViewHolder {
// 创建一个静态用于绑定item的布局映射
TextView tv_first;
}
源代码下载链接http://download.csdn.net/download/w965440884/9505966