2

嘿伙计们,我已经有一段时间了,但我还没有找到 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

所以,现在我被难住了。聪明的安卓社区,你能帮帮我吗?

谢谢你。

4

1 回答 1

1

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

https://github.com/fry15/uk.co.jasonfry.android.tools

这里有一个演示项目:http: //jasonfry.co.uk/ ?id=28

享受!

于 2011-03-01T17:24:13.060 回答