在适配器和片段中设置onClickListener之间的区别

时间:2015-12-23 08:38:37

标签: android android-fragments android-adapter android-gridview

在我的代码中,我有片段和gridview。我也有这个Gridview的ArrayAdapter。现在我需要在点击时更改网格单元格的背景颜色。我这样做是通过设置onClickListener。

问题是在适配器和片段中为GridView单元设置onClickLister有什么区别?

1 个答案:

答案 0 :(得分:1)

我将尝试澄清你的问题中涉及的不同Android实体。

GridViewView

  • 您可以将Click Listeners分配给Views,以便他们对用户点击做出反应。任何视图都有一个通用的clicklistener(View.setOnClickListener),只要用户点击视图的任何部分就会被调用

  • 复杂视图可以有其他几个更专业的clicklistener,例如,菜单式视图(ListViews,GridViews等)也会有一个setOnItemClickListener / setOnItemLongClickListener,只要有用户点击某个项目(与整个视图相比)

Adapter只是一个类,其目的是使用数据构建视图以消耗数据的视图。例如,您的GridViewAdapter:它将为每一行调用一次,它将构造每个Row View(在getView方法中)。每个行视图(可能)都是ViewGroupFrameLayout / RelativeLayout ...),其中包含一些其他视图(即图标ImageView,名称{{1} },地址......)

因此适配器本身不接受clicklisteners。但是适配器创建的视图可以!例如,假设您的TextView是电话列表:

  • 您的GridViewGridView对所选电话列表条目做出反应并显示有关该联系人的信息

  • 您的ItemClickListener适配器为每一行构建视图。想象一下,您的“联系人”行有3个视图:标题,图标和删除联系人的按钮

  • 在适配器内,您将onClickListener分配给“删除联系人”按钮查看。请注意,您始终将GridView分配给视图,而不是适配器本身(“您无法单击适配器!”)

  • 关于碎片,将它们视为“子活动”。片段包含具有多个视图的根布局。同样,它将在那些您分配clicklisteners的视图中,而不是片段本身。