繁体   English   中英

隐藏expandablelistview子元素中的元素的按钮

[英]Button to hide element in expandablelistview child

我有2个buttons在我的expandablelistiview孩子,第一个按钮View.VISIBLE ,另一个View.GONE 我试图将第一个按钮更改为第二个按钮可见性,但是它不起作用。

我的getchildview方法:

@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView,
    ViewGroup parent) {

    final String childText = (String) getChild(groupPosition, childPosition);

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) this.mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_item, null);
    }

    buttonOff = (Button) convertView.findViewById(R.id.button_off);

    buttonOff.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            buttonOff.setVisibility(View.GONE);
            buttonTest.setVisibility(View.VISIBLE);
        }
    });

    buttonTest = (Button) convertView.findViewById(R.id.button_test);
    buttonTest.setVisibility(View.GONE);

    buttonTest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            buttonTest.setVisibility(View.GONE);
            buttonOff.setVisibility(View.VISIBLE);
        }
    });

    TextView listChildText = (TextView) convertView.findViewById(R.id.list_item);

    listChildText.setText(childText);

    return convertView;
}

您的代码无法正常运行,因为您没有维护按钮的状态。 初始化所有行的按钮状态。 然后,每次调用getView()方法时,首先检查状态,然后根据其可以设置显示哪个按钮。 单击按钮后,您需要更新该行的状态。 下面的代码可以指导您朝这个方向发展:

@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView,
                         ViewGroup parent) {

    final String childText = (String) getChild(groupPosition, childPosition);

    // get visibility status of the first button
    final boolean buttonOffVisible = getFirstButtonVisibility(groupPosition, childPosition);

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) this.mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_item, null);
    }

    buttonOff = (Button) convertView.findViewById(R.id.button_off);

    buttonOff.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // set the state of the first button
            setFirstButtonVisibility(groupPosition, childPosition, false); // false denoting as GONE

            buttonOff.setVisibility(View.GONE);
            buttonTest.setVisibility(View.VISIBLE);
        }
    });

    buttonTest = (Button) convertView.findViewById(R.id.button_test);
    // buttonTest.setVisibility(View.GONE);    <-- remove this line

    buttonTest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // set the state of the first button
            setFirstButtonVisibility(groupPosition, childPosition, true); // true denoting as VISIBLE

            buttonTest.setVisibility(View.GONE);
            buttonOff.setVisibility(View.VISIBLE);
        }
    });

    // depending upon the visibility status of first button, make one of the two visible
    if(buttonOffVisible) {
        buttonOff.setVisibility(View.VISIBLE);
        buttonTest.setVisibility(View.GONE);
    }
    else {
        buttonOff.setVisibility(View.GONE);
        buttonTest.setVisibility(View.VISIBLE);
    }

    TextView listChildText = (TextView) convertView.findViewById(R.id.list_item);

    listChildText.setText(childText);

    return convertView;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM