我正在尝试制作一个简单的可扩展列表视图。组行和子行仅由一个简单的TextView和一个Imageview组成。
当我部署一个组或滚动时,列表滞后。因此,我开始寻找解决方案,并找到了Viewholder模式。 我测试了它,但是它并不能提高性能。
如何改善我的列表以使滚动流畅。 (该列表包含150个项目)。
有什么办法异步加载drawable吗?
谢谢。
@Override
public View getChildView(int listPosition, final int expandedListPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final ExerciseWithGroup exercise = this.dataSetFiltered.get(listPosition).get(expandedListPosition);
ExercisePickerChildViewHolder viewHolder;
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(layoutInflater == null)
return null;
convertView = layoutInflater.inflate(R.layout.row_exercise_picker, null);
viewHolder = new ExercisePickerChildViewHolder();
viewHolder.title = convertView.findViewById(R.id.exercise_title);
viewHolder.icon = convertView.findViewById(R.id.exercise_image);
viewHolder.tick = convertView.findViewById(R.id.exercise_validation);
convertView.setTag(viewHolder);
}else{
viewHolder = (ExercisePickerChildViewHolder) convertView.getTag();
}
viewHolder.icon.setImageResource(exercise.exercise.iconId);
viewHolder.title.setText(exercise.title));
return convertView;
}
更新:对于想了解我如何处理这种情况的人们,我已将Drawable加载到AsyncTask中。很正常。