嘿伙计们,我已经有一段时间了,但我还没有找到 100% 有效的解决方案。
问题
我有一个循环显示项目的 Android 画廊,每个项目都包含一个 ImageView(我们称之为缩略图)和它下方的另一个视图,其中包含一些文本和一个小图标(我们称之为标题)。
我想要实现的是基于用户点击位置的 2 种不同的操作,所有这些操作都不会破坏图库向左和向右移动的方式。
例如,如果点击缩略图,我想做动作 A(例如弹出一个更大的版本),当点击标题时,我想做动作 B,比如弹出一个带有标题的 toast图片的。
我尝试过的事情
我看到的问题有两种方法:
方法一
从包含画廊的主视图中将 OnItemClickListener 附加到画廊项目,然后从画廊适配器内将 OnClickListener 附加到标题。
虽然这种方法有效,但它似乎可以防止画廊在被标题抓住和拖动时被扔掉。
由于 onClick 返回 void,似乎无法将 onClick 事件向下传递,以便稍后由 Gallery 的 onItemClick 处理。
因为我希望能够使用 Title,所以这种方法对我不起作用,至少在当前版本中是这样。
方法二
第二种方法是在 Gallery 的 setOnItemClickListener 中包含所有检测逻辑。
如果有办法确定点击的视图是缩略图还是标题,一切都会非常简单,并且会完好无损。
但是,我还不知道如何做到这一点。
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
// TODO: figure out which view has been clicked on, but how?
}
}
由于我使用 ViewHolders 范例的无限适配器,我尝试打印这些值:
Log.d("IDs", v.getId() + " " + ((ViewHolder) v.getTag()).thumbnail.getId() + " " + getSelectedItemId() + " " + parent.getId() + " " + parent.getItemIdAtPosition(0));
但是在点击缩略图之后它们都不同了:
-1 2131230800 -9223372036854775808 2131230865 0
所以,现在我被难住了。聪明的安卓社区,你能帮帮我吗?
谢谢你。