java - 如何将 OnLongClickListener 设置为 ListView 中的按钮?

标签 java android listview

所以我想做的是将 OnLongClickListener 设置为 ListView 按钮。我设法将 OnClickListener 放入其中,并且还尝试将 OnLongItemClick 放入整个 ListView 中,但问题是,当我按下 Item 中的某个按钮时,永远不会调用 OnLongItemClick。

我能够使用 android:onClick="myOnClickListener"将 OnClickListener 放置到 ListView-Rows 的 XML 文件中的按钮,但这不适用于 OnLongClickListener。

我还尝试将 OnLongClickListener 设置为普通 OnClickListener 中的按钮,但这不是我真正想要的,因为它只是在正常单击后才起作用。

有没有办法以编程方式将 OnLongClickListener 设置为按钮?它们在每一行中都必须是唯一的。顺便说一句,我没有扩展 ListActivity。

这是按钮的 OnClickListener:

//I attached this in my XML-File to the Button
public void handlerForPlus(View v) 
{
    //The LinearLayout where all my Items are in
    LinearLayout myItemLayout = (LinearLayout)v.getParent();

    //A random EditText in my Layout
    editTextCountItem = (EditText) myItemLayout.getChildAt(0);

    //The Button i want to add the OnLongClickListener to
    buttonItemPlus = (Button)myItemLayout.getChildAt(1);

    //Here i set the OnLongClickListener to the button, but I want to do this before it gets clicked normally.
    buttonItemPlus.setOnLongClickListener(this);

    editTextCountItem.setText((Integer.toString(Integer.parseInt(editTextCountItem.getText().toString()) + 1)));

    myItemLayout.refreshDrawableState();
}

这是我的 ListView-Items LinearLayout 的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="40" >

    <EditText
        android:id="@+id/etAnzahl"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginTop="5dp"
        android:layout_weight="5"
        android:text="0" />

    <!-- This is the Button i want to set a OnLongClickListener to. -->
    <Button
        android:id="@+id/bItemPlus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="25"
        android:onClick="handlerForPlus"
        android:text="Item" />

    <Button
        android:id="@+id/bItemMinus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="5"
        android:onClick="handlerForMinus"
        android:text="-" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:weightSum="10"
        android:layout_weight="5"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tvPriceItemSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:text="PreisS" />

        <TextView
            android:id="@+id/tvPriceItemLarge"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:text="PreisL" />

    </LinearLayout>

</LinearLayout>

那么有人知道什么可以解决我的问题吗?

最诚挚的问候,亚历克斯。

最佳答案

buttonItemPlus.setOnLongClickListener(this); 对整个ListView有效果。我认为您正在寻找的是 buttonItemPlus.setOnItemLongClickListener(this); ,它对 ListView 中的特定 TextView 具有效果。

关于java - 如何将 OnLongClickListener 设置为 ListView 中的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434893/

相关文章:

java - 使用 jar 作为资源存档的简单方法

java - 如何在junit中设置函数的顺序

窗口中的 Java JFrame 矩形

android - ObservableInt 导致数据绑定(bind)库崩溃

delphi - ListView 子项目图像

java - Scala 相当于 java.util.stream

android - 如何阻止应用程序在崩溃时重新启动并使崩溃可见?

android - 无法停止使用 alarmManager 启动的服务

android - 当 Activity 在 Android 中启动时,如何阻止 EditText 获得焦点?

android - 为什么我的 ListView 在向 Firebase 添加新数据后不刷新?