2013-01-31 8 views
5

Mam rozwijaną listę używając dwóch kursorów: 1 dla grupy, a dla dzieci powiązanych z grupą. Użytkownik może użyć filtru (alphaindexer) na tej rozwijanej liście. Chciałbym całkowicie usunąć widok grupowy, gdy nie ma dzieci (nie tylko ikona :)). To tak, jakbym usunął wiersz dla pustej grupy.Ukryj widok grupy w rozwijanej liście

Próbuję ustawić widoczność w metodzie bindgroupview. Próbuję ustawić wysokość układu dla widoku grupowego ... Wynik jest taki sam, przestrzeń jest nadal zachowywana i wyświetlana.

Czy to możliwe i jak mogę zrobić tę funkcję?

Niektóre poniższy kod:

// mMapSeqArticle is TreeMap<Object, ArrayList<Object>) 
mSequenceAdapter = new SequenceCommandeAdapter(getActivity(), mMapSeqArticle); 

public class SequenceCommandeAdapter extends BaseExpandableListAdapter { 
     Object[] mGroupSeq = null; 
     Map<Sequence, ArrayList<TicketArticle>> mContent; 

     public SequenceCommandeAdapter(Context c, 
       Map<Sequence, ArrayList<TicketArticle>> map) { 
      mContent = map; 
      mGroupSeq = mContent.keySet().toArray(); 
     } 

     @Override 
     public Object getChild(int groupPosition, int childPosition) { 
      Sequence s = (Sequence) mGroupSeq[groupPosition]; 
      return ((ArrayList<TicketArticle>) (mContent.get(s))) 
        .get(childPosition); 
     } 

     @Override 
     public long getChildId(int groupPosition, int childPosition) { 
      Sequence s = (Sequence) mGroupSeq[groupPosition]; 
      return ((ArrayList<TicketArticle>) (mContent.get(s))) 
        .get(childPosition).mId; 
     } 

     @Override 
     public View getChildView(int groupPosition, int childPosition, 
       boolean isLastChild, View convertView, ViewGroup parent) { 
      // retrouve la valeur de la sequence 
      TicketArticle ta = (TicketArticle) getChild(groupPosition, 
        childPosition); 
      if (convertView == null) { 
       convertView = LayoutInflater.from(getActivity()).inflate(
         R.layout.adapter_row_article_details_table, null); 
      } 



      convertView.setTag(groupPosition + ":" + childPosition); 
      return convertView; 
     } 

     @Override 
     public int getChildrenCount(int groupPosition) { 
      Sequence s = (Sequence) mGroupSeq[groupPosition]; 
      return ((ArrayList<TicketArticle>) (mContent.get(s))).size(); 
     } 

     @Override 
     public Object getGroup(int groupPosition) { 
      return (Sequence) mGroupSeq[groupPosition];// mContent.get(groupPosition); 
     } 

     @Override 
     public int getGroupCount() { 
      return mContent.size(); 
     } 

     @Override 
     public long getGroupId(int groupPosition) { 
      return ((Sequence) mGroupSeq[groupPosition]).key; 
     } 

     @Override 
     public View getGroupView(int groupPosition, boolean isExpanded, 
       View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = LayoutInflater.from(getActivity()).inflate(
         R.layout.adapter_header_sequence_details_table, null); 
      } 


      convertView.setTag(null); 
      return convertView; 
     } 

     @Override 
     public boolean hasStableIds() { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public boolean isChildSelectable(int groupPosition, int childPosition) { 
      // TODO Auto-generated method stub 
      return true; 
     } 
    } 

Odpowiedz

0

nie widzę sposobu bindGroupView w kodzie, ale z tego co opisałeś, to brzmi jak jesteś na dobrej drodze. Muszę ustawić widoczność wszystkich widoków podrzędnych (w tym układów) z GONE, aby rząd grupy całkowicie zniknął z widoku listy rozwijanej. W przeciwnym razie pusty wiersz pozostaje.

Jeśli opublikujesz zawartość R.layout.adapter_header_sequence_details_table, będę miał lepszy pomysł na inne rzeczy, które musisz zrobić GONE.

Powiązane problemy