所以我有一个扩展BaseAdapter的自定义适配器。在getView()函数中,我实例化了一些OnClickListeners来处理列表索引(对于ListView)中的视图的onClick事件。这是一个例子:
public class CustomAdapter extends BaseAdapter {
private ArrayList<SomeObject> mObjectArray;
private LayoutInflater mInflater;
// ...
public View getView(int position, View convertView, ViewGroup parent) {
final SomeObject obj = mObjectArray.get(position);
convertView = mInflater.inflate(R.layout.custom_layout, null);
TextView textView = TextView) convertView.findViewById(R.id.custom_text1);
textView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
textView.setText(obj.getText());
}
});
// ...
return convertView;
}
}
它工作正常,但我担心从性能角度来看是否不建议这样做?为CustomAdapter类创建一个OnClickListener并使用TextView.setTag()和TextView.getTag()来自定义它更好吗?如下所示:
public View getView(int position, View convertView, ViewGroup parent) {
// ...
textView.setTag(obj);
textView.setOnClickListener(oneOnClickListener);
// ...
}
// ...
// One OnClickListener to handle all onClick events for textView
OnClickListener oneOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
SomeObject obj = v.getTag();
textView.setText(obj.getText());
}
});
或者在getView()函数中实例化新的OnClickListener是否正常?感谢
答案 0 :(得分:0)
我认为在OnClickListeners
中创建匿名getView()
是个问题。 OnClickListener
毕竟非常轻量级。我经常这样做。如果您遇到具体的性能问题,我只会将其更改为您提及的其他方法。