android - ListView会自动回收 View 吗?

标签 android listview android-recyclerview

我是 Android 编程新手,最近阅读了很多相关内容。如果我理解正确的话,ListView 的功能之一是它会回收 View ,并在某个项目离开屏幕时用新数据替换它。

就在几分钟前,我正在阅读有关无限滚动的内容,而 RecyclerView 是实现此类功能的流行选择之一。所以我查了一下RecyclerView,在这个video中,其中提到 RecyclerView 自动回收 View 以将其重新用于新数据(以此来对比其与 ListView 的区别)。

我是否误解了ListView的回收机制?或者,如果它确实回收,您实际上如何实现(或者您如何知道您正在实现)它?

最佳答案

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链接。

关于android - ListView会自动回收 View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367200/

相关文章:

java - 构建错误(将字节码转换为 dex 时出错)

android - 从 IDE 运行测试有效,但不能从命令行运行

android - 使用自定义列表适配器(包括节标题)自定义过滤ListView

java - onItemClick 监听器的问题

java - 为什么我收到错误 : java. lang.RuntimeException : java. lang.IllegalStateException : RecyclerView has no LayoutManager on (HelpActivity. java:28)

java - Android Demo 没有出现在模拟器中

javascript - React Native - 不变违规 : Objects are not valid as a React child

android - 如何动画化 ListView 的扩展?

scrollview 里面的 android-recycleview

java - 无法解析 onBindViewHolder 中的符号 'textView'