Android 为listview定义onlick:Onclick在listview级别与Onclick在自定义视图适配器内部
在自定义适配器中,单击事件处理更好(考虑性能和内存),1)在ListView级别定义单击处理程序。2) 在自定义适配器中定义单击处理程序 在自定义适配器级别定义单击处理程序会增加内存消耗吗?。 下面是一些示例伪代码 //在列表级别定义单击处理程序Android 为listview定义onlick:Onclick在listview级别与Onclick在自定义视图适配器内部,android,listview,android-adapter,android-event,Android,Listview,Android Adapter,Android Event,在自定义适配器中,单击事件处理更好(考虑性能和内存),1)在ListView级别定义单击处理程序。2) 在自定义适配器中定义单击处理程序 在自定义适配器级别定义单击处理程序会增加内存消耗吗?。 下面是一些示例伪代码 //在列表级别定义单击处理程序 layoutNotificationViewHolder.mNotificationListLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Overr
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);
}
});
首先,列表视图是非种族化的,请改用RecyclerView。
对于您的问题,如果单击的处理程序是适配器(ex 1),那么不会创建有利于内存的新对象,如果您将其设置为ex2,则每次调用getView函数时都会创建一个不太好的新对象。但一般来说,它并不昂贵,所以这两个示例都很好。这是一些遗留代码,目前我没有选择放弃ListView。您确定每次调用getView函数时都会创建新对象吗?我在想,既然对象类型是最终的,不能修改,对象引用应该只是在ListView数组中保存一个指向对象的指针/引用。
不会创建对内存有利的新对象
每次在哪里创建或不创建新对象???考虑到性能和内存
为什么您认为在某个地方编写代码会影响性能?我更喜欢在适配器中编写点击式代码,因为它易于阅读和维护。据我所知,在您定义的业务逻辑不具有复杂性(循环)并反过来影响性能之前,不会对性能产生任何影响。
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);
}
});
}