如果项具有带有onClick的按钮,则Android ListView setOnItemClickListener不工作

如果项具有带有onClick的按钮,则Android ListView setOnItemClickListener不工作,android,listview,Android,Listview,我是Android开发的新手,我不了解一些东西,即使是一件简单的事情:我有一个列表视图,每个项目都包含一个文本视图和一个按钮。当单击按钮时,它在getView方法内激发setOnClickListener。此外,我在这个ListView上有一个setOnItemClickListener适配器,但是当单击标签时,该方法不会触发。为什么会这样 更新 以下是单击按钮的方式: ImageButton btnToMap = view.findViewById(R.id.btnToMap);

我是Android开发的新手,我不了解一些东西,即使是一件简单的事情:我有一个列表视图,每个项目都包含一个文本视图和一个按钮。当单击按钮时,它在getView方法内激发setOnClickListener。此外,我在这个ListView上有一个setOnItemClickListener适配器,但是当单击标签时,该方法不会触发。为什么会这样

更新

以下是单击按钮的方式:

ImageButton btnToMap = view.findViewById(R.id.btnToMap);
            btnToMap.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Coordinates coordinate = MainActivity.coordinates.get(position);
                    Toast.makeText(getApplicationContext(), "coordonata apasata: " + coordinate.latitude + ";"
                            + coordinate.longitude, Toast.LENGTH_SHORT).show();
                }
            });

根据需要使用focusable或requestfocus()。

在定义按钮的xml文件中添加:

android:focusable="false"

您可以在适配器类中重写
onClick
方法,并检查单击了哪个视图

@Override
public void onClick(View v) {
    if (v.getId() == R.id.button)
            mButtonListener.buttonOnClick();
        else
            mItemListener.itemOnClick();
    }
mButtonListener
mItemListener
是传递给构造函数中适配器的侦听器

private final OnButtonListener mButtonListener;
private final OnItemListener mItemListener;

public MyAdapter(OnButtonListener buttonListener, OnItemListener itemListener) {
    mButtonListener = buttonListener;
    mItemListener = itemListener;

}

public interface OnButtonListener {
    void buttonOnClick();
}

public interface OnItemListener {
    void itemOnClick();
}

我在我的

中使用了这个,这是一种每个新手都会遇到的视图焦点问题;)

简单解决方案:

行布局的所有子项设置为

focusableInTouchMode=false
focusableInTouchMode=false
android:genderantfocusability=“blocksDescendants”
添加到您的父项中

focusableInTouchMode=false
focusableInTouchMode=false
添加到按钮中!!为什么会发生这种情况?因为,按钮正在获得您的
行的焦点,这导致不会触发
onimclick()
我已更新了我的问题,使您的
行布局的所有子项都成为
focusable=false
focusableInTouchMode=false
,并添加
android:generationfocusability=“BlocksDescents”
发送给您的家长。