ExpandableListView和ImageView的性能问题

时间:2018-07-25 20:51:57

标签: java android performance listview

我正在尝试制作一个简单的可扩展列表视图。组行和子行仅由一个简单的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中。很正常。

0 个答案:

没有答案