2012-06-23 3 views
1

안녕하세요 사용자 정의 확장형 목록보기를 만들려고하는데 어댑터의 설명서가 매우 혼란스럽고 다양합니다. 평소와 같이 json 배열을 읽는 hashmap을 가지고 목록에 넣습니다. 각 자식 그룹은 마지막 위치의 "GRUPO"키에있는 동일한 배열 내에서 전송됩니다. 누군가가 나를이 어댑터 구현을 줄 수 있습니까? json으로에서 아래의 코드는 다음과 같습니다확장형 목록보기 android json

   if (tipopergunta.contentEquals("BOOLEANO") || tipopergunta.contentEquals("ESCMULTIPLA") || tipopergunta.contentEquals("ESCUNICA")){ 
        HashMap<String,String> childdados = new HashMap<String,String>(); 
        childdados.put("GRUPO", "Dados"); 
        childdados.put("TIPOPERGUNTA", tipopergunta); 
        childdados.put("PERGUNTA", pergunta); 
        childdados.put("BREVEDESIGNACAO", brevedesc); 
        childdados.put("ESTADO",estado); 
        childdados.put("INSTRUCOES",instrucoes); 
        childdados.put("IDPERGUNTA",idpergunta); 
        Log.d("childdados",""+childdados.toString()); 
        list.add(childdados); 
       } 


      if (tipopergunta.contentEquals("OPINIAO")){ 
         HashMap<String,String> childdados = new HashMap<String,String>(); 
         childdados.put("GRUPO", "Opinião"); 
         childdados.put("TIPOPERGUNTA", tipopergunta); 
         childdados.put("PERGUNTA", pergunta); 
         childdados.put("BREVEDESIGNACAO", brevedesc); 
         childdados.put("ESTADO",estado); 
         childdados.put("INSTRUCOES",instrucoes); 
         childdados.put("IDPERGUNTA",idpergunta); 

         Log.d("opiniaolist",childdados.toString()); 
         list.add(childdados); 
      } 

      if (tipopergunta.contentEquals("FOTOGRAFIA")){ 
         HashMap<String,String> childdados = new HashMap<String,String>(); 
         childdados.put("GRUPO", "Fotografia"); 
         childdados.put("TIPOPERGUNTA", tipopergunta); 
         childdados.put("PERGUNTA", pergunta); 
         childdados.put("BREVEDESIGNACAO", brevedesc); 
         childdados.put("ESTADO",estado); 
         childdados.put("INSTRUCOES",instrucoes); 
         childdados.put("IDPERGUNTA",idpergunta); 

         Log.d("fotolist",childdados.toString()); 
         list.add(childdados); 
        } 

답변

1

This이 나를 확장 목록보기 어댑터를 이해하는 데 도움 것입니다.

확장 가능한 목록보기에는 항상 부모와 자식이 있습니다. 부모를 클릭하면 자녀가 나타납니다.

그래서 어댑터에는 주로 3 가지가 필요합니다. 부모 목록. 자식 목록 (예 : 배열 배열 일 수 있음) 자식 그리기 방법과 부모 그리기 방법.

부모 배열이 있어야합니다 : String[] parents = {"parent1, "parent2"); 및 각 배열이 한 부모의 하위 인 childern 배열 배열이 있어야합니다.

주어진 행에 대해 원하는 부모를 반환해야 getGroup 방법에
String [][] children = {{child_A_Parent1, child_B_Parent1}, {child_A_Parent2, child_B_parent2}}; 

:

public Object getChild(int groupPosition, int childPosition) { 

     return children[groupPosition][childPosition]; 
    } 

에 : 당신은 당신이 원하는 아이를 반환해야 getChild 방법에

public Object getGroup(int groupPosition) { 
     return parents[groupPosition]; 
    } 

getChildView() 메서드를 사용하여 원하는 레이아웃 (예 : 텍스트 뷰가있는 xml)을 확장하고 해당 자식으로 텍스트를 설정해야합니다.

public View getGroupView(int groupPosition, boolean isExpanded, 
       View convertView, ViewGroup parent) { 
     //inflate a the layout and get the text view 

     tvParent.setText(parents[groupPosition]; 

} 

모든 종류를 설정할 수 있습니다 : 같은 부모 방법에 대해 말할 수있다

public View getChildView(int groupPosition, int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 
    //inflate a the layout and get the text view 
    tv.setText(children[grouposition][childPosition]; 
..} 

: 당신은 이미 인수 전달되는 아동에 대해 걱정할 필요가 없습니다 여기 있습니다 부모와 자식을위한 레이아웃 그냥 인플레이터를 사용하여 레이아웃 폴더에서 XML을 부 풀리십시오. 그런 다음 리소스 ID를 사용하여 위젯으로 뷰를 채 웁니다.

희망 사항은이 스 니펫에 데이터를 적용하는 데 도움이되기를 바랍니다.

+0

아직도 이해할 수없는 것 같습니다. ican 여기에 내가 이미지 어댑터에서 얻는 무엇을 넣어, 나는 어떻게 어댑터에 그것을 구현하는 방법을 모르겠다. – user1437481

+1

나는 각 방법을 설명하려고 노력했다. 그것이 당신을 돕는 지보십시오. –