关于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编辑  收藏  举报

导航