【问题标题】:Does ListView automatically recycle views?ListView 会自动回收视图吗?
【发布时间】:2016-07-14 14:50:10
【问题描述】:

我是 android 编程的新手,最近阅读了很多关于它的内容。 ListView 的功能之一,如果我理解正确的话,是它回收视图并在项目离开屏幕时将其替换为新数据。

就在几分钟前,我正在阅读关于无限滚动的文章,RecyclerView 一直是实现此类功能的流行选择之一。所以我查找了RecyclerView,在这个video 中,提到RecyclerView 自动回收视图以将其重用于新数据(作为对比其与ListView 的区别的一种方式)。

我对@9​​87654327@的回收机制有什么误解吗?或者如果它确实回收了,你如何实际实施(或者你怎么知道你正在实施)它?

【问题讨论】:

  • 不,它没有,但它在Adapter#getView 方法中为您提供了作为第二个View convertView 参数的回收视图

标签: android listview android-recyclerview


【解决方案1】:

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
}

更多详情请参考this链接。

【讨论】:

    猜你喜欢
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2016-08-03
    • 2015-04-12
    • 2021-04-29
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多