0

CommonsWare의 MergeAdapter 클래스를 사용하려고 시도 중이며 제한된 성공을 거두고 있습니다. 특히, 1) 내 ArrayAdapter이 사용하기에 적합한지, 2) 올바르게 추가하는지, 3) 모든 것을 연결하는 데 필요한 모든 작업을 수행 중인지 확실하지 않습니다. 여기 이 ArrayAdapter는 CommonsWare MergeAdapter와 함께 사용하기에 적합합니까? 그렇다면 왜 작동하지 않는 것입니까?

ArrayAdapter의 내 서브 클래스 :

: 여기
class PDLAdapter extends ArrayAdapter<PartnerDisease> { 

    public PDLAdapter(final Context context) { 
     super(context, 0); 
    } 

    @Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 
     ViewHolder viewHolder; 

     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.partnerdisease_list_item, null); 
      viewHolder = new ViewHolder(convertView); 
      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     viewHolder.populateViews(getItem(position)); 

     return convertView; 
    } 

} 

내 객체 StructuredSubDisease (실제로는 하위 질병을 포함하는 최상위 개체의 고려한다면 이름이 말이 없지만, 무엇이든)입니다
class StructuredSubDisease { 
    public String headingText; 
    public ArrayList<PartnerDisease> subDiseases; 

    public View headingView() { 
     View returnView = mInflater.inflate(R.layout.partnerdisease_list_item, null); 
     TextView t = (TextView) returnView.findViewById(R.id.tv_displayname); 
     t.setText(headingText); 
     return returnView; 
    } 
} 

... 여기에 "마법"이 일어나기로되어 있습니다.

  for (StructuredSubDisease s : subDiseaseList) { 
       mMergeAdapter.addView(s.headingView()); // @Alex, <--- thing 1 

       PartnerDiseaseListAdapter adapter = new PartnerDiseaseListAdapter(this); 

       for (PartnerDisease p : s.subDiseases) { 
        adapter.add(p); 
       } 

       mMergeAdapter.addAdapter(adapter); // <--- and thing 2 
      } 

내가 Log이 수를 검정 고시가 : 이것은 2을 기대 1을 반환

Log.i("mergecount", "" + mMergeAdapter.getCount()); 

.

편집 :이 결과는 headingView()이 적절한 제목 텍스트와 함께 표시되지만 그 아래에는 목록이 없음을 알 수 있습니다.

어디로 잘못 가고 있습니까?

+0

왜 2를 기대합니까? –

+0

@Alex 두 가지를 추가했기 때문에 - headingView (렌더링 됨)와'adapter' (자동으로 실패 함). –

답변

1

내 ArrayAdapter와 사용

괜찮아 보인다 적합합니다.

것은 나는 괜찮아 보인다 제대로

에 추가하고있는 경우.

I 당신은 분명히 어떤 질병이없는 최대

모두에게 연결할 필요가 모든 것을하고있는 중이 야합니다.

나는 두 가지를 추가하기 때문에 - (자동으로 실패) (렌더링)에 headingView()와 어댑터

getCount(), 당신의 ListView에 있어야 총 행의 수를 반환하지 않음 MergeAdapter에 추가 된 항목의 수 귀하의 경우에는 질병이없는 것으로 보입니다.

을 무시하고 PartnerDiseaseListAdapter을 직접 ListView에 넣는 것으로 시작하십시오. 그 일을하십시오. 그런 다음 MergeAdapter으로 다시 전환하십시오.

+0

감사합니다. 당신 말이 맞습니다. 문제는 목록이었다. 내 바보 같지 않아.MergeAdapter에 추가 된 뷰 + 어댑터 수를 얻기위한 메소드가 있습니까? 아니면 일반적으로 유용하지 않은 것입니까? –

+0

@ jshin47 : 필요성을 보지 못하거나 듣지 못했기 때문에 추가 된 부분에 대한 계정을 얻는 방법이 없습니다. 구체적인 시나리오가있는 경우 프로젝트에 문제를 제기하십시오. 추가하기는 쉽지만 기울여 API를 유지하는 것이 좋습니다. – CommonsWare

관련 문제