2016-02-21 91 views
0

这里是我的困惑:我有一个listview有8个相同的项目。我通过添加按钮逐个添加。并且它会首先新增8个convertView。最后,我添加了15个项目。但是当我向下滚动时,第11个项目出现了,它再次新建一个convertView ..为什么它不仅仅使用来自回收站的convertView?BaseAdapter getView()和回收器是如何工作的?


这里有代码的部分:

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater)this.mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.city_item, parent, false); 
     viewHolder = new ViewHolder(); 
     Log.d("test", "new one" + position); 
     viewHolder.checkBox = (CheckBox)convertView.findViewById(R.id.checkbox); 
     viewHolder.textView = (TextView)convertView.findViewById(R.id.tv_city); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder)convertView.getTag(); 
    } 
} 

下面是图片:

+0

我见过一些关于convertView重复使用的表演,但他们没有提到回收机构是如何工作的。 – thirtvanke

回答

0

的ListView d不符合回收原则。您可以为此使用RecyclerViews。结帐here

+0

好的..谢谢..我想用recycleview代替.. – thirtvanke

相关问题