2016-06-26 10 views
-1

Ich habe eine erweiterbare Listenansicht. Das Kind davon wird von einer Hash-Karte bevölkert. Was ich versuche zu tun ist, ich möchte eine Ansicht für das erste und letzte Kind eines Schlüssels von Hash-Karte anzeigen und dann für andere ausblenden. Derzeit versuche ich dies auf folgende Weise zu erreichen und es funktioniert nicht. Erwähnt ist die getChildView-Methode meiner EpandableListAdapter-Klasse.Wie ermittelt man das erste und letzte Kind für einen Schlüssel in Hash Map?

@Override 
    public View getChildView(int groupPosition, final int childPosition, 
          boolean isLastChild, View convertView, ViewGroup parent) { 

     final String childText = (String) getChild(groupPosition, childPosition); 


     LinearLayout titleLayout = null; 
     LinearLayout sumTotalLayout = null; 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.order_form_history_viewable, null); 
      titleLayout = (LinearLayout) convertView.findViewById(R.id.llOrderHistroryTitles); 
      sumTotalLayout = (LinearLayout) convertView.findViewById(R.id.llOrderHistroryTotals); 
     } 


     if (childPosition==0 && titleLayout != null) { 
      titleLayout.setVisibility(View.VISIBLE); 
     } else if (titleLayout != null) { 

      titleLayout.setVisibility(View.GONE); 
     } 

     // int childSize = this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
       .size(); 
     if (isLastChild && sumTotalLayout != null) { 
      sumTotalLayout.setVisibility(View.VISIBLE); 
     } else if (sumTotalLayout != null) { 
      sumTotalLayout.setVisibility(View.GONE); 
     } 
//  if (childPosition == childSize-1 && sumTotalLayout!=null){ 
//   sumTotalLayout.setVisibility(View.VISIBLE); 
//  }else if (sumTotalLayout!=null){ 
//   sumTotalLayout.setVisibility(View.GONE); 
//  } 


     TextView txtListChild = (TextView) convertView 
       .findViewById(R.id.tvOrderlistBrand); 

     txtListChild.setText(childText); 
     return convertView; 
    } 
+0

Plain-Hash-Karten haben keine garantierte Reihenfolge. 'LinkedHashMap' funktioniert, aber das ist eine andere Sache. Welche Reihenfolge hast du erwartet? Was meinst du (* genau *) mit "es funktioniert nicht"? –

+0

Sie überprüfen, ob (convertView == null), aber wo ist der andere Teil, wenn covertView nicht gleich null ist? –

+0

Derzeit überprüfe ich die Kindposition und wenn der Parameter childPosition 0 ist, dann ist es das erste Kind. Für das letzte Kind betrachte ich den booleschen Parameter isLastChild. Dieser Prozess funktioniert nicht und ich bekomme nicht das gewünschte Ergebnis. Bitte sehen Sie die oben genannte Methode – user3393926

Antwort

0

Du bist gerade if (convertView == null), aber es gibt keinen anderen Teil für sich heißt, wenn covertView nicht gleich null. Versuchen Sie das zu tun, es wird funktionieren.

Verwandte Themen