ListView会自动回收视图吗?

时间:2016-07-14 06:43:39

标签: android listview android-recyclerview

我是Android编程的新手,我最近一直在阅读很多关于它的内容。 ListView的一个特性,如果我理解正确的话,它会回收视图,并在项目离开屏幕时用新数据替换它。

就在几分钟前,我正在阅读有关无休止滚动的内容,RecyclerView一直是实现此功能的热门选择之一。所以我查找了RecyclerView,并在此video中提到RecyclerView自动回收视图以将其重新用于新数据(作为对比其与{{1}的差异的方法}})。

我是否误解了ListView其回收机制?或者,如果它确实回收,你如何实际实现(或者你怎么知道你正在实施)呢?

1 个答案:

答案 0 :(得分:3)

RecyclerView会自动回收。为了生成ListView回收项,您需要在适配器类中进行此修改。

 @Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    if (convertView == null) {
        //brand new
        convertView = LayoutInflater.from(mContext).inflate(R.layout.days_list_item, null);
        holder = new ViewHolder();

        // below is variables that will be different in your case
        holder.numberOfDays = (TextView) convertView.findViewById(R.id.eventDays);
        holder.sinceOrUntil = (TextView) convertView.findViewById(R.id.eventType);
        holder.eventTitle = (TextView) convertView.findViewById(R.id.eventTitle);
        holder.daysText = (TextView) convertView.findViewById(R.id.DaysText);

        convertView.setTag(holder);
    }
    else {
        //reusing item
        holder = (ViewHolder) convertView.getTag();
    }

    // rest of the code
}

有关详细信息,请参阅official documentation链接。