我是 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/