Answering my own question - It was actually very simple, all I had to do was to go through each child of "parent" and hide it if it's not the current view. hope it'll help someone one day..
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
RelativeLayout wrapper = (RelativeLayout) view;
final RelativeLayout itemClosed = (RelativeLayout) wrapper.getChildAt(1);
final RelativeLayout fullItem = (RelativeLayout) wrapper.getChildAt(0);
boolean isOpen = itemClosed.getVisibility() == View.GONE;
if (!isOpen) {
fullItem.setVisibility(View.VISIBLE);
itemClosed.setVisibility(View.GONE);
for (int i = 0; i < parent.getChildCount(); i++) {
RelativeLayout v = (RelativeLayout) parent.getChildAt(i);
if (v != view && v.getChildAt(0).getVisibility() == View.VISIBLE) {
v.getChildAt(0).setVisibility(View.GONE);
v.getChildAt(1).setVisibility(View.VISIBLE);
}
}
} else {
itemClosed.setVisibility(View.VISIBLE);
fullItem.setVisibility(View.GONE);
}
}