在我的代码中,我有片段和gridview。我也有这个Gridview的ArrayAdapter。现在我需要在点击时更改网格单元格的背景颜色。我这样做是通过设置onClickListener。
问题是在适配器和片段中为GridView单元设置onClickLister有什么区别?
答案 0 :(得分:1)
我将尝试澄清你的问题中涉及的不同Android实体。
GridView
是View
。
您可以将Click Listeners分配给Views,以便他们对用户点击做出反应。任何视图都有一个通用的clicklistener(View.setOnClickListener
),只要用户点击视图的任何部分就会被调用
复杂视图可以有其他几个更专业的clicklistener,例如,菜单式视图(ListViews,GridViews等)也会有一个setOnItemClickListener
/ setOnItemLongClickListener
,只要有用户点击某个项目(与整个视图相比)
Adapter
只是一个类,其目的是使用数据构建视图以消耗数据的视图。例如,您的GridViewAdapter
:它将为每一行调用一次,它将构造每个Row View(在getView方法中)。每个行视图(可能)都是ViewGroup
(FrameLayout
/ RelativeLayout
...),其中包含一些其他视图(即图标ImageView
,名称{{1} },地址......)
因此适配器本身不接受clicklisteners。但是适配器创建的视图可以!例如,假设您的TextView
是电话列表:
您的GridView
有GridView
对所选电话列表条目做出反应并显示有关该联系人的信息
您的ItemClickListener
适配器为每一行构建视图。想象一下,您的“联系人”行有3个视图:标题,图标和删除联系人的按钮
在适配器内,您将onClickListener分配给“删除联系人”按钮查看。请注意,您始终将GridView
分配给视图,而不是适配器本身(“您无法单击适配器!”)
关于碎片,将它们视为“子活动”。片段包含具有多个视图的根布局。同样,它将在那些您分配clicklisteners的视图中,而不是片段本身。