Adapter滑动卡顿优化

1、点击事件过多的用new OnClickListener{}直接匿名内部类

原因:在滑动的过程中会不断的重复创建新的OnClickListener,旧的不断的被回收当需要回收的对象过多的时候会引起GC,导致列表卡顿。
解决方案
可以建一个通用的OnClickListener,不会建的,就在类上集成点击接口,把数据放入Button的Tag中,根据id来判断是哪个Button执行了点击,来取出数据、执行不同的逻辑
多个参数怎么办,那就setTag多个
示例代码

helper.getView(R.id.cl_mood_item).setTag(R.id.adapter_item_id,item.getId());
    helper.getView(R.id.cl_mood_item).setTag(R.id.adapter_position,helper.getAdapterPosition());
    helper.getView(R.id.cl_mood_item).setOnClickListener(this);

@Override
public void onClick(View view) {
    switch (view.getId()){
        
        case R.id.cl_mood_item:
            if(view.getTag(R.id.adapter_item_id) != null && view.getTag(R.id.adapter_item_id) instanceof Integer &&
                    view.getTag(R.id.adapter_position) != null && view.getTag(R.id.adapter_position) instanceof Integer){
                //todo your
            }
            break;
        

    }
}

敬请后续。。。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注