Button.setClickable(false)无效

Yup*_*Yup 8 android android-listview

我已经设置mButton.setClickable(false);了我的代码,但仍然是button.setOnClickListener我的代码全局调用此按钮.

编辑:抱歉延迟更新.以下是我遇到问题的详细信息视图.
在我的listview中的customAdapter类getView方法

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    View row = convertView;
    YourWrapper wrapper = null;
    HashMap<String, Object> cTa= new HashMap<String, Object>();
    cTa= d.getPosition(position)
    Button mButton = (Button)convertView.findViewById(R.id.mBtn);
    if (row == null)
    {
        row = inflater.inflate(R.layout.layout, parent, false);
        wrapper = new YourWrapper (row);
        row.setTag(wrapper);
    }
    else
        wrapper = (YourWrapper) row.getTag();

     if(success)
        {
                    // section-1
            mButton.setClickable(true);
        }
        else{
                   // section-2
            mButton.setClickable(false);
            mButton.setFocusable(false);
        }
    wrapper.getButton().setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //operation
        }
    });

    return row;
}
Run Code Online (Sandbox Code Playgroud)

上面是当前正在运行的代码,在第2节它使mButton可单击 - 假,并且可聚焦 - 为false但仍然在监听下面的wrapper.getButton().setOnClickListener()并执行操作.请建议我.抱歉延迟更新.谢谢!

更新:我现在做了以下解决问题的热门修复程序.

// section-2
mButton.setVisibility(View.GONE);
mButton.setClickable(false);
mButton.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)

Jan*_*Jan 42

这似乎是设计上的.这来自View.setOnClickListener方法的文档:

注册单击此视图时要调用的回调.如果此视图不可单击,则它将变为可单击.

  • srsly ......"如果这个视图不可点击,它就会变得可点击." 在我看来,这是一个巨大的设计缺陷.谢谢你的回答,这应该被接受. (14认同)

joe*_*zac 28

而不是setClickable(false)使用setEnabled(false)


小智 9

将 setClickable 放在 setOnClickListener 之后

mBtn.setOnClickListener(this);
mBtn.setClickable(false);
Run Code Online (Sandbox Code Playgroud)

如果你把 setClickable(false) 放在 setOnClickListener(this) 之前,它就不起作用。