【问题标题】:Defining onlick for listview: Onclick at listView level vs Onclick inside custom view adapter为 listview 定义 onlick:在 listView 级别的 Onclick 与自定义视图适配器内的 Onclick
【发布时间】:2019-06-14 13:12:29
【问题描述】:

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

}

【问题讨论】:

  • considering performance and memory 为什么你认为在某个地方写代码会影响性能?我更喜欢在适配器中编写点击代码,因为它易于阅读和维护。据我所知,在您定义的业务逻辑没有复杂性(循环)并依次影响性能之前,不会对性能产生任何影响。

标签: android listview android-adapter android-event


【解决方案1】:

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

【讨论】:

  • 这是一些遗留代码,目前我没有摆脱 ListView 的选项。您确定每次调用 getView 函数时都会创建新对象吗?我在想,由于对象类型是最终的并且不能修改,所以对象引用应该简单地保存一个指向 ListView 数组内对象的指针/引用。
  • no new objects will be created which is good for memory 每次都在哪里创建或不创建新对象??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多