现在我在android中使用ExpandableListview。 在ExpabdableListview中,GroupHeader包含一个textview。 和Child包含一个Textview和一个Button。 在按钮我有setbackground白星。
我还使用BaseExpandableListAdapter类在expandablelistview中设置数据。
我的问题
当按钮背景改变的时候点击特定的子列表按钮时。白色到黄色。
请有人知道改变特定按钮的颜色吗?
先谢谢你。
答案 0 :(得分:0)
如果您的问题中没有任何代码,很难回复,但想法可能如下:
getChildView()
中检查是否单击了项目并设置了正确的背景图像; 示例代码如下所示:
// for ViewHolder pattern
private static class ViewHolder {
// Child item views
public Button button;
public long combinedId;
}
private static class ExpandableAdapter extends BaseExpandableListAdapter implements View.OnClickListener {
private LongSparseArray<Boolean> mClickedItems = new LongSparseArray<Boolean>();
@Override
public View getChildView(final int groupPosition, final int childPosition, final boolean isLastChild, final View convertView, final ViewGroup parent) {
View view = convertView;
ViewHolder holder = null;
if (view == null) {
// Inflate child view
holder = new ViewHolder();
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.combinedId = getCombinedChildId(groupPosition, childPosition);
holder.button.setOnClickListener(this);
if (mClickedItems.get(holder.combinedId, false)) {
holder.button.setBackgroundResource(R.drawable.not_clicked_background);
} else {
holder.button.setBackgroundResource(R.drawable.clicked_background);
}
return null;
}
@Override
public void onClick(final View v) {
final long id = ((ViewHolder)v.getTag()).combinedId;
Boolean clicked = mClickedItems.get(id);
if (clicked == null) {
clicked = true;
} else {
clicked = !clicked;
}
mClickedItems.append(id, clicked);
}
// Rest of adapter
}
此外,使用ToogleButton
代替普通按钮可能更好。