Button.setClickable(false) 不起作用

我已经在我的代码中设置了,但仍然这个按钮被我的代码的全局调用。mButton.setClickable(false);button.setOnClickListener

编辑:抱歉延迟更新。以下是我面临问题的详细信息视图。
inside my listview customAdapter class getView method

@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;
}

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

更新:我已经做了以下热修复,暂时解决了这个问题。

// section-2
mButton.setVisibility(View.GONE);
mButton.setClickable(false);
mButton.setFocusable(false);

答案 1

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

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


答案 2

不使用setClickable(false)setEnabled(false)


推荐