在ONItemLongClickListener发生时启动ONItemClickListener

时间:2013-03-02 03:16:43

标签: google-tv

我能描述的最好方法如下。我有一个海报画廊,有一堆图像。当用户在图库中来回移动时,所选海报会突出显示。我在海报库中设置了以下代码:

 Gallery posterGallery = (Gallery) context.findViewById(R.id.moviePosterGallery);
 posterGallery.setAdapter(new MoviePosterImageGalleryAdapter(context, key,
                          item.getCategory()));
 posterGallery.setOnItemSelectedListener(
    new MoviePosterOnItemSelectedListener(bgLayout, context));
 posterGallery.setOnItemClickListener(new MoviePosterOnItemClickListener());
 posterGallery.setOnItemLongClickListener(new MoviePosterOnItemLongClickListener());

如果您按下vizio costar上的Remote,似乎会发生这种情况,如果您按住OK按钮,则会触发Click和Long click事件。在我的情况下,当收到长按时会弹出一个对话框,但海报也会启动与之相关的视频以开始播放,这是ItemClickListener代码的一部分..

在Nexus 7平板电脑上测试相同的代码时,只会触发长按,而不是两者。有没有办法在Google TV上正确处理长按。如果有帮助,我正在使用带有Google TV 3的vizio costar。

此外,如果将鼠标指针移到项目上,然后按住遥控器正面的 - 键,则只会触发长按事件。它似乎与OK以及持续多久有关。

我查看了以下类似的问题:

onListItemClick and onItemLongClick Google TV

但是当我处理事件时,我已经让onItemLongClick返回true。

1 个答案:

答案 0 :(得分:1)

Vizio遥控器有一个怪癖。 “确定”按钮未映射到右键代码。当按下OK时Vizio遥控器发送KEYCODE_ENTER,实际上它应该发送KEYCODE_DPAD_CENTER。这就是我认为导致你的问题的原因。如果您尝试使用AbleRemote作为输入设备,您应该能够看到它按预期工作。现在要解决您的问题,如果存在键盘,您可能必须转到键码侦听器并检测posterGallery上的关键事件以触发短按和长按。