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 !