向行添加按钮后,ListView行无法单击

Che*_*eng 7 android android-listview

目前,我有一ListView排.单击行上的任何区域将产生ListView单击事件.

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
        this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
        this.getListView().setMultiChoiceModeListener(new ModeCallback());
        this.getListView().setOnItemClickListener(new ListViewOnItemClickListener());
    } else {
        // http://stackoverflow.com/questions/9754170/listview-selection-remains-persistent-after-exiting-choice-mode
        this.getListView().setOnItemLongClickListener(new ListViewOnItemLongClickListener());
        this.getListView().setOnItemClickListener(new ListViewOnItemClickListener());
    }
Run Code Online (Sandbox Code Playgroud)

现在,对于每一行,我想添加一个小按钮.单击小按钮将产生按钮单击事件,这与ListView原始单击事件不同.

在此输入图像描述

在我ArrayAdapter,我用

public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;

    if (rowView == null) {
        LayoutInflater inflater = activity.getLayoutInflater();
        rowView = inflater.inflate(R.layout.watchlist_row_layout, null);
        ...
    }

    Button button = (Button)rowView.findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Utils.showLongToast("BUTTON CLICK");
        }
    });
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

单击该按钮将产生按钮单击事件.但是,单击按钮以外的区域,将不再产生任何ListView单击事件.

我可以知道为什么会这样吗?有什么方法可以解决这个问题吗?

Phi*_*oda 14

如果要使行和按钮都可单击,请设置

android:focusable="false"
Run Code Online (Sandbox Code Playgroud)

为你的按钮.ImageButtons,RadioButtons,......

Android主要是为大量输入法设计的.整个系统完全无需触摸屏即可工作.要在UI中导航,用户可以使用方向键,当视图和视图是可聚焦的时,它会聚焦视图之后的视图.默认情况下,所有Android控件都是可聚焦的.为了防止具有无法聚焦的控件,ListView将简单地阻止选择(和单击)项目视图.按照设计,ListView阻止包含至少一个可聚焦后代的项目视图的点击,但它不会使内容焦点可达,调用setItemsCanFocus(true).

这是一个很好的解释:在ListView中有几个可点击的区域