[英]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.