- Add an ImageView in you list_group.xml
- In Adapter check for the condition you want to hide that ImageView.
Get the ImageView through
ImageView imgV = (ImageVIew )convertView.findViewById(R.id.imgVId);
Hide the ImageView with
imgV.setVisibility(View.INVISIBLE);
How to hide group indicator from specific group item in custom expandable list view?
-
28-09-2022 - |
문제
I have created custom expandable list view with text view and image in group item .I want to hide the group indicator from some of groups in expandable list view .How to solve this problem? here is expandable list adapter.
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<String> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<String>> _listDataChild;
ExpandableListView exp;
private int[] parentClickStatus ;
GroupHolder groupHolder;
public ExpandableListAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<String>> listChildData,ExpandableListView exp) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
this.exp=exp;
parentClickStatus = new int[6];
setListEvent();
}
private void setListEvent() {
exp.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int arg0) {
parentClickStatus[arg0] = 0;
}
});
exp.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int arg0) {
parentClickStatus[arg0] = 1;
}
});
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@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 infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
int colorPos = childPosition % 2;
if(colorPos==0)
{
convertView.setBackgroundColor(Color.MAGENTA);
}
else
{
convertView.setBackgroundColor(Color.BLUE);
}
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
System.out.println("convert view is null");
LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
groupHolder = new GroupHolder();
groupHolder.arrowImg = (ImageView) convertView.findViewById(R.id.imageView1);
groupHolder.lblListHeader = (TextView) convertView.findViewById(R.id.lblListHeader);
groupHolder.lblListHeader.setTypeface(null, Typeface.BOLD);
groupHolder.lblListHeader.setText(headerTitle);
convertView.setTag(groupHolder);
} else {
groupHolder = (GroupHolder) convertView.getTag();
}
/*if ( getChildrenCount( groupPosition ) == 0 ) {
groupHolder.arrowImg.setVisibility( View.INVISIBLE );
}
else {
groupHolder.arrowImg.setImageResource(R.drawable.arrow_down);
}*/
if (parentClickStatus[groupPosition] == 0) {
System.out.println("group position "+groupPosition);
groupHolder.arrowImg.setImageResource(R.drawable.arrow_up);
} else {
System.out.println("else group position "+groupPosition);
groupHolder.arrowImg.setImageResource(R.drawable.arrow_down);
}
return convertView;
}
class GroupHolder {
ImageView arrowImg;
TextView lblListHeader;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
해결책
다른 팁
This is the code i have used for solving this issue .
if ( getChildrenCount( groupPosition ) == 0 ) { ((ImageView) convertView.findViewById(R.id.imageView1)).setVisibility( View.INVISIBLE ); } else { ((ImageView) convertView.findViewById(R.id.imageView1)).setVisibility( View.VISIBLE ); ((ImageView) convertView.findViewById(R.id.imageView1)) .setImageResource(isExpanded?R.drawable.arrow_up:R.drawable.arrow_down); }