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;
}
}
敬请后续。。。
网友评论