如上图,需要在点击item任何地方都触发事件,然后预览文件。
你可能会觉得只要在ViewHolder的itemView上设置事件就可以了。 结果是,空白的地方并且子view没有占用的地方才能触发事件。
那么如何实现这个需求呢? 我们需要动点歪脑筋。在正常的item布局基础上,我们再添加如下内容:
<View
android:id="@+id/layoutEventArea"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent" />
并且使得layoutEventArea这个view可以覆盖住整个item。并且把背景颜色设成透明。
最后,把事件挂在layoutEventArea上。
listItemViewHolder.layoutEventArea.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onFileClick(mOriginalFiles, file, position);
}
});
这样一来就解决事件问题了。