ListView之我所见
如今安卓App中最常见的控件应该就是ListView了,联系人和短信列表都是ListView实现的.作为安卓学习之路上的一个重量级的boss,今天算是初步的学习了它的相关知识,以下为今日学习的内容.
主要流程
创建实体类,定义自定义布局文件 自定义适配器类,重写其中关键方法
主要代码
PersonBean
private String name;
private Integer headPhoto;
public PersonBean(String name, Integer headPhoto) {
this.name = name;
this.headPhoto = headPhoto;
}
//getter&setter
PersonAdapter
private int resourceId;
private String TAG = "PersonAdapter";
public PersonAdapter(Context context, int resource, List<PersonBean> objects) {
super(context, resource, objects);
resourceId = resource;
}
/****
* 重写了 getView()方法,这个方法在每个子项被滚动到屏幕内的时候 会被调用。
* 在 getView 方法中,首先通过 getItem()方法得到当前项的 Fruit 实例,然后使用 LayoutInflater 来为这个子项加载我们传入的布局
* 接着调用 View 的 findViewById()方法分别 获取到 ImageView 和 TextView 的实例
* 并分别调用它们的 setImageResource()和 setText()方法来设置显示的图片和文字
* 最后将布局返回,这样我们自定义的适配器就完成了
*
* @param position 没一个item的下标
* @param convertView
* @param parent
* @return
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//获取当前的person
Log.d(TAG, "position:" + position);
PersonBean personBean = getItem(position);
View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
ImageView imageView = (ImageView) view.findViewById(R.id.head_photo);
TextView textView = (TextView) view.findViewById(R.id.user_name);
imageView.setImageResource(personBean.getHeadPhoto());
textView.setText(personBean.getName());
return view;
}
ListViewActivity
PersonAdapter personAdapter = new PersonAdapter(ListViewActivity.this, R.layout.person, personBeanList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(personAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(ListViewActivity.this, personBeanList.get(position).getName(), Toast.LENGTH_SHORT).show();
}
});
效果图如下所示:
Comments !