关于ListView中的getView()方法的理解
最近在弄android的通讯录来玩玩~
然后就在纠结那个列表怎么弄才好..
在博客园里搜了一下
http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html
结合这两位大人的随笔.终于搞定啦~~
allin的ListView使用写得很详细了.
但是最后的getView()方法让我不理解.
好吧.我承认我是新手..
OK.继续.
然后就搜到第二个网站啦~
虽说也写得比较详细..但是不是那么容易懂..
或者说我笨吧~
然后最后个人理解是.
就好比例子中.只用了十个内存地址空间.
不断地循环地用这10个地址来存储需要显示的item.
在这段代码中
convertView在最开始创建了10个内存地址,且都是空.
1 @Override
2 public View getView(int position, View convertView, ViewGroup parent) {
3 System.out.println("getView " + position + " " + convertView);
4 ViewHolder holder = null;
5 if (convertView == null) {
6 convertView = mInflater.inflate(R.layout.item1, null);
7 holder = new ViewHolder();
8 holder.textView = (TextView)convertView.findViewById(R.id.text);
9 convertView.setTag(holder);
10 } else {
11 holder = (ViewHolder)convertView.getTag();
12 }
13 holder.textView.setText(mData.get(position));
14 return convertView;
15 }
所以就需要setTag.使它不为空.
即利用holder,调用convertView.setTag函数
而在后面.convertView不为空了.
则调用getTag来获得当前位置的tag
最后利用holder的各种set操作来替换当前位置的tag.
~~
posted on 2011-04-17 10:51 fedition 阅读(19393) 评论(0) 编辑 收藏 举报