0

私は混乱BaseExpandableListAdapterの概念を持って、私の問題を以下に説明しました。BaseExpandableListAdapter convertviewはgetChildView()から古いビューを返します

期待:例えば

Iは、2個の基を有し、各グループは以下

等の子として別のレイアウトを保持
  • グループ1 -ReceivedRequest:

    child1の - からLayout1

    child2 - レイアウト1から

  • グループ2 -ReceivedSent:

    child1の - child2の

    LAYOUT2

    から - 問題

LAYOUT2

から:私はグループ1が最初 をクリックすると

とその後グループ2すなわちconvertview(...なければならないその)は正しい道を膨張させ、それぞれのグループに初めて

を呼び出すしかし、ときに私グループ2最初にクリックした後、グループ1そのはまだ古いグループ2ビューを返すときconvertviewはnullですルートは私の問題は ...である私は、正確なStackOverflowの上hereを尋ねたが、解決策はまだ

以下の私ですがない場合親切に

に)nullを返すが、その古いビューもコード

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

     SingleRow singleRow = new SingleRow(); 
     RequestInfo Req_child = (RequestInfo) getChild(groupPosition,childPosition); 
     String type = Req_child.requestertype; 
     if(convertView==null) { 

      switch (type) 
      { 
       case RequestInfo.REQ_RECEIVED_ACCOUNT: 

        LayoutInflater infalInflater = (LayoutInflater) context 
          .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        convertView = infalInflater.inflate(R.layout.row_reqlist_acctrcvd, null); 
        convertView.setTag(singleRow); 
        break; 

       case RequestInfo.REQ_SENTACCOUNT: 

        LayoutInflater infalInflater1 = (LayoutInflater) context 
          .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        convertView = infalInflater1.inflate(R.layout.row_reqlist_acctsent, null); 
        convertView.setTag(singleRow); 
        break; 
        } 
     } 

     singleRow = (SingleRow) convertView.getTag(); 
     switch (type) 
     { 
      case RequestInfo.REQ_RECEIVED_ACCOUNT: 
       singleRow.tvUsername_req_rcd = (TextView) convertView.findViewById(R.id.rw_reqaccts_rcvd_username); 
       singleRow.tvNickName_req_rcd = (TextView) convertView.findViewById(R.id.rw_reqaccts_rcvd_nickname); 
       singleRow.im_gender_req_rcd = (ImageView) convertView.findViewById(R.id.rw_reqaccts_rcvd_profpic); 
       singleRow.btAcceptReq = (Button) convertView.findViewById(R.id.rw_reqaccts_rcvd_accpt); 
       singleRow.btRjctReq = (Button) convertView.findViewById(R.id.rw_reqaccts_rcvd_rjct); 

       singleRow.tvUsername_req_rcd.setText(Req_child.requesterUsername); 
       singleRow.tvNickName_req_rcd.setText(Req_child.requesterNickName); 
       singleRow.im_gender_req_rcd.setImageBitmap(Req_child.requestergender.equals("Male") ? rmale_pic : rfemale_pic); 
       Log.i("Expand", "your child username is " + Req_child.requesterUsername); 

      break; 

      case RequestInfo.REQ_SENTACCOUNT: 
       singleRow.tvUsername_req_sent = (TextView) convertView.findViewById(R.id.rw_reqaccts_sent_username); 
       singleRow.tvNickName_req_sent = (TextView) convertView.findViewById(R.id.rw_reqaccts_sent_nickname); 
       singleRow.im_gender_req_sent = (ImageView) convertView.findViewById(R.id.rw_reqaccts_sent_profpic); 
       singleRow.btReqSent = (Button) convertView.findViewById(R.id.rw_btn_sent_reqaccts); 

       singleRow.tvUsername_req_sent.setText(Req_child.requesterUsername); 
       singleRow.tvNickName_req_sent.setText(Req_child.requesterNickName); 
       singleRow.im_gender_req_sent.setImageBitmap(Req_child.requestergender.equals("Male") ? rmale_pic : rfemale_pic); 
       Log.i("Expand", "your child username is " + Req_child.requesterUsername); 

     } 
     return convertView; 
    } 

答えて

0

、それは他の人を助けるように私は自分の質問に答える、私はgetChildTypeCountに(手動でメソッドをオーバーライドすると仮定)getChildType(int型groupPosition、int型childPosition)包み、あなたが別の子を持っていますレイアウト、私の下に更新されたコードを見つける。

@Override 
public int getChildTypeCount() { 
    return 2; 
} 

@Override 
public int getChildType(int groupPosition, int childPosition) { 
    return groupPosition; 
} 


@Override 
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    SingleRow singleRow = null; 
    RequestInfo Req_child = childtems.get(groupPosition).get(childPosition); 
    String type = Req_child.requestertype; 
    if(convertView==null) { 
     switch (type) 
     { 
      case RequestInfo.REQ_RECEIVED_ACCOUNT: 
       singleRow = new SingleRow(); 
        convertView = inflater.inflate(R.layout.row_reqlist_acctrcvd, null); 
        singleRow.tvUsername_req_rcd = (TextView) convertView.findViewById(R.id.rw_reqaccts_rcvd_username); 
        singleRow.tvNickName_req_rcd = (TextView) convertView.findViewById(R.id.rw_reqaccts_rcvd_nickname); 
        singleRow.im_gender_req_rcd = (ImageView) convertView.findViewById(R.id.rw_reqaccts_rcvd_profpic); 
        singleRow.btAcceptReq = (Button) convertView.findViewById(R.id.rw_reqaccts_rcvd_accpt); 
        singleRow.btRjctReq = (Button) convertView.findViewById(R.id.rw_reqaccts_rcvd_rjct); 
        convertView.setTag(singleRow); 
       break; 

      case RequestInfo.REQ_SENTACCOUNT: 
       singleRow = new SingleRow(); 
        convertView = inflater.inflate(R.layout.row_reqlist_acctsent, null); 
        singleRow.tvUsername_req_sent = (TextView) convertView.findViewById(R.id.rw_reqaccts_sent_username); 
        singleRow.tvNickName_req_sent = (TextView) convertView.findViewById(R.id.rw_reqaccts_sent_nickname); 
        singleRow.im_gender_req_sent = (ImageView) convertView.findViewById(R.id.rw_reqaccts_sent_profpic); 
        singleRow.btReqSent = (Button) convertView.findViewById(R.id.rw_btn_sent_reqaccts); 
        convertView.setTag(singleRow); 
       break; 
       } 
    } 
    else 
    { 
     singleRow = (SingleRow) convertView.getTag(); 
    } 

    switch (type) 
    { 
     case RequestInfo.REQ_RECEIVED_ACCOUNT: 
      singleRow.tvUsername_req_rcd.setText(Req_child.requesterUsername); 
      singleRow.tvNickName_req_rcd.setText(Req_child.requesterNickName); 
      singleRow.im_gender_req_rcd.setImageBitmap(Req_child.requestergender.equals("Male") ? rmale_pic : rfemale_pic); 
     break; 

     case RequestInfo.REQ_SENTACCOUNT: 
      singleRow.tvUsername_req_sent.setText(Req_child.requesterUsername); 
      singleRow.tvNickName_req_sent.setText(Req_child.requesterNickName); 
      singleRow.im_gender_req_sent.setImageBitmap(Req_child.requestergender.equals("Male") ? rmale_pic : rfemale_pic); 
    } 
    return convertView; 
} 
関連する問題