ListView基本用法总结

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();
        }
    });

效果图如下所示:

alt text

Comments !