检测Android Gallery项目不同区域的点击

检测Android Gallery项目不同区域的点击,android,click,onclick,gallery,onfling,Android,Click,Onclick,Gallery,Onfling,嘿,伙计们,我已经做了一段时间了,但我还没有找到100%有效的解决方案 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? } } 问题 我有一个And

嘿,伙计们,我已经做了一段时间了,但我还没有找到100%有效的解决方案

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?
  }
}
问题 我有一个Android Gallery,它可以循环浏览项目,每个项目包括一个ImageView(我们称之为缩略图)和它下面的另一个视图,其中包含一些文本和一个小图标(我们称之为标题)

我想实现的是基于用户点击位置的两种不同的操作,所有操作都不会干扰gallery左右的投掷方式

例如,如果单击缩略图,我想执行操作a(例如,弹出一个更大的版本),当单击标题时,我想执行操作B,比如弹出一个带有图片标题的祝酒词

我尝试过的事情 在我看来,有两种解决问题的方法:

方法1 从包含库的主视图中将OnItemClickListener附加到库项目,然后从库适配器中将OnClickListener附加到标题

虽然这种方法有效,但它似乎可以防止画廊在被标题抓住和拖拽时抛掷

由于onClick返回void,因此似乎无法将onClick事件向下传递,以便稍后由库的onItemClick处理

因为我希望能够使用这个标题,所以这种方法对我不起作用,至少在当前版本中是这样

方法2 第二种方法是将所有检测逻辑都放在Gallery的SetonicClickListener中

如果有一种方法可以确定点击的视图是缩略图还是标题,那么一切都将非常简单,而这次放纵也将完好无损

但是,我现在还不知道怎么做

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
所以,现在我被难倒了。睿智的安卓社区,你能帮我吗


谢谢。

我有一个解决方案给你:SwipeView。这是我的一个开源项目,在github上查看最新的源代码(我网站上的二进制文件有点过时了,很多与你所说的内容相关的bug已经修复)

这里有一个演示项目:


享受吧

谢谢Fry,我已经得到了关于你的项目的提示,但我希望在此期间,你能告诉我你将如何解决这个问题(我将很快查看你的代码)。好的,获取你的SwipeView,在每个页面上(一个页面可以是任何视图组)都有你的imageview和textview。在imageview上弹出一个onclicklistener,在textview上弹出另一个。您不应该对使用触摸事件的单击侦听器有任何问题。