我正在使用自定义 ListViewAdapter 来显示一个列表。列表中的每一行都有 3 个按钮,即附加的侦听器。但我发现它非常令人不安,在每次滚动期间,都会创建新的 OnClickListeners,即使对于存在 convertView 的那些行,也是非空值。
//据我了解,最常见的转换视图的方法:
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.listview_item, parent, false);
} else {
view = convertView;
}
final TextView textView = (TextView) view.findViewById(R.id.txtProduct);
textView.setText(name);
textView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
...
}
});
... two more listeners, with the same approach
return view;
根据我对 Java 的经验,Spider-sense “ting-a-lings” - 似乎创建和丢弃相同的侦听器方法是垃圾收集器滥用。我不确定老听众是什么时候被收集的,如果它有......
有没有办法使用旧的监听器,而不是创建一个新的?(某种缓存数据结构)