0

У меня запутанная концепция BaseExpandableListAdapter, объясненная ниже.BaseExpandableListAdapter convertview возвращает старый вид из getChildView()

Expectation:

Например, у меня есть две группы, каждая группа имеет различное расположение, как ребенок, как ниже

  • Group1 -ReceivedRequest:

    child1 - от Layout1

    ребенок2 - от Layout1

  • Group2 -ReceivedSent:

    child1 - от Layout2

    child2 - от Layout2

Проблема:

Когда я нажимаю Group1 первый и затем Group2 его работа идеальна (т. convertview равно нулю при вызове в первый раз на соответствующей группе, так ее раздувания правильный путь),

Но когда я нажимаю Group2 первый, а затем Group1 его до сих пор возвращение старого Group2 вид ... (т.е. convertview должен быть пустым, но его возвращение старого вида)

Любезно маршрут мне, где это проблема .. я нашел точный спросить here на Stackoverflow но нет никакого решения еще

Ниже мой Код

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 (интермедиат groupPosition, внутр childPosition) упаковывают вы имеете другого ребенка layout, Найдите мой ниже обновленный код.

@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; 
} 
Смежные вопросы