为listview定义onlick:listView级别的Onclick与自定义视图适配器内部的Onclick

时间:2019-01-21 07:12:36

标签: android listview android-adapter android-event

在自定义适配器中,单击事件处理会更好(考虑性能和内存),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);
            }
        });

}

1 个答案:

答案 0 :(得分:0)

首先,列表视图已被弃用,请改用RecyclerView。 对于您的问题,如果单击的处理程序是适配器(ex 1),那么将不会创建对内存有利的新对象,并且如果您像在ex2中那样进行设置-每次getView函数将创建新对象被称为哪个不太好。但总的来说,它并没有那么昂贵,因此两个示例都可以。