在自定义适配器中,单击事件处理会更好(考虑性能和内存),1)在ListView级别定义单击处理程序。 2)在自定义适配器中定义点击处理程序。
在“定制适配器”级别定义单击处理程序是否会增加内存消耗? 下面是一些示例伪代码。
///在列表级别定义点击处理程序
layoutNotificationViewHolder.mNotificationListLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final SampleItem selectedItem = itemList.get(position);
Intent itemInfoIntent = new Intent(context, itemMoreInfoActivity.class);
itemInfoIntent.putExtra("selected_item", selectedItem);
context.startActivity(itemInfoIntent);
}
});
//在适配器内部定义点击处理程序。
public View getView(final int position, View convertView, ViewGroup parent) {
final SampleItem selectedItem = itemList.get(position);
convertView.mCameraIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent itemInfoIntent = new Intent(context, itemMoreInfoActivity.class);
itemInfoIntent.putExtra("selected_item", selectedItem);
context.startActivity(itemInfoIntent);
}
});
}
答案 0 :(得分:0)
首先,列表视图已被弃用,请改用RecyclerView。 对于您的问题,如果单击的处理程序是适配器(ex 1),那么将不会创建对内存有利的新对象,并且如果您像在ex2中那样进行设置-每次getView函数将创建新对象被称为哪个不太好。但总的来说,它并没有那么昂贵,因此两个示例都可以。