当前位置: 首页 > 知识库问答 >
问题:

BaseAdapter为的ListView没有响应OnLongClickListener

赵晨
2023-03-14

我知道有一些话题谈论这种行为,但我还没有看到我可以使用的解决方案。

问题如下,我有一个使用BaseAdapter实现OnLongClickListener的列表视图。在GetView方法中,我将每个视图的onLongClickListener设置为这个值,但根本没有捕获到长时间单击。此外,我将每个onClickListener项设置为实现OnClickListeter的不同项,它确实捕捉到了单击事件,当我尝试对longClick事件执行相同操作时,它仍然没有捕捉到长单击事件。

一点代码:

public class ListOfCustomersAdapter extends BaseAdapter implements OnLongClickListener
 {

...

public View getView(int position, final View convertView, ViewGroup parent) {


    vi.setOnClickListener(item); // works
    vi.setOnLongClickListener(this); // doesn't works
}


}

该项目是实现OnClickListener的类的实例

编辑1:

视图vi是一个包含多个视图的FrameLayout:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_item"
android:descendantFocusability="blocksDescendants" >

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


    <include
        android:id="@+id/details_container"
        layout="@layout/list_message_my_details"
        android:paddingRight="6dp" />

    <include
        android:id="@+id/details_container"
        layout="@layout/list_message_responder_details" />

    <LinearLayout
        android:id="@+id/text_container"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/list_message_margin_left"
        android:layout_marginRight="@dimen/list_message_margin_right"
        android:orientation="vertical"
        android:paddingTop="55dp" >

        <TextView
            android:id="@+id/message_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@color/white"
     android:paddingBottom="@dimen/message_with_attached_channel_item_bottom_minus_padding"
               android:paddingTop="@dimen/message_with_attached_channel_item_bottom_minus_padding"
            android:textColor="@color/mobli_dark" />

        <FrameLayout
            android:id="@+id/text_seperator"
            android:layout_width="fill_parent"
            android:layout_height="1px"
            android:background="@color/mobli_dark_20"
            android:visibility="gone" >
        </FrameLayout>
    </LinearLayout>
</FrameLayout>

编辑2:

公共视图getView(int位置,最终视图转换视图,ViewGroup父级){

    View vi = convertView;
    ItemType item = items.get(position);

    if (item.getType() == null)
        vi = new TextItemType(context, item);
    else if (item.getType() == 1)
        vi = new ColorItemType(context, item);
    else if (item.getType() == 2)
        vi = new BoldItemType(context, item);
    else if (item.getType() == 3)
        vi = new FlatItemType(context, item);


    vi.setTag(item.getId());
    vi.setOnLongClickListener(this); //doesn't work
    vi.setOnClickListener(item); // work
    return vi;
}

共有2个答案

隆长卿
2023-03-14

最好添加listView.setOnItemLongClickListener(this);在您的main Active中

夏侯昆琦
2023-03-14

您是否将适配器与任何活动关联?尝试在活动中而不是在适配器中实现侦听器。

 类似资料:
  • 我想在计数器的基础上排序listview,但我无法做到这一点,请任何人帮助我。 在这里,我正在分享我的代码和屏幕截图。 这是链接到列表视图的适配器 自定义适配器组.java 下面是使用ListView的代码 Fragment_groups.java 这是屏幕截图

  • 问题内容: 我要做什么? 单击时,将执行。在方法内部,我将方法的每个索引传递给方法,以便可以在中显示它。 发生了什么 ? 如果我 不 守行作为 注释 ,在我的方法,则是 按预期工作 。尽管如果我将 其注释掉 ,则 停止响应 。 难道我做错了什么 ? Java版本: 这是我正在使用的代码: *编辑1:* 按照建议,如果我添加,它确实可以工作,但是会抛出如下所示的错误。这样就可以了。但这是 合法 的表

  • 昨天工作正常,一夜之间Windows7重新启动,现在Eclipse不会完成加载--旋转器显示“Eclipse SDK(未响应)”对话框“用户操作正在等待”完成“构建工作区”。Android SDK内容加载器保持在0%我尝试过: eclipse-clean delete c:\program files\eclipse\configuration.settings\org.eclipse.ui.id

  • 我用IntelliJ创建了一个非常简单的流测试。 IntelliJ无法完成测试,并给了我错误 这导致假设响应程序流不执行任何操作。 启动器流被执行。我可以看到这一点,因为命令显示在日志中。但是,我不知道响应器流是否从未由发起方流启动,或者只是没有响应。也许你可以帮我。 谢谢

  • 我是一个全新的计算机编程为CIS210和它的一个可怕的开始。下载了JDK9和Netbeans 8.2。Netbeans不允许我打开新项目或文件。没有错误消息或任何东西,几乎就像我没有点击它。屏幕保持空白,如下面的链接所示。快把我逼疯了。 单击“新建项目”时屏幕为空白:

  • 我要把我的代码移到服务器上。这段代码可以在我在localhost上设置的自己的服务器上完美地运行和呈现数据库信息,但是当我从服务器上运行代码时,index.html中会显示一个错误,说明“IO没有定义”。无论出于什么原因,socket.io都无法被识别。此外,如果我在浏览器中键入localhost:3000,则不会显示任何内容。任何帮助都将不胜感激。 我有两个文件,server.js和index.