1

您好我正在尝试创建一个自定义的可扩展列表视图,但是适配器上的文档非常混乱和多样化。像往常一样,我有一个 hashmap 来读取 json 数组,然后我把它放在列表中。每个孩子的组在最后一个位置的键“GRUPO”中的相同数组中发送。有人可以给我适配器实现吗?来自 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);
                    }
4

1 回答 1

1

是帮助我理解可扩展列表视图适配器的原因。

在可扩展的列表视图中,您始终拥有父母和孩子。当您单击父项时,您会看到其子项。

所以适配器主要需要三样东西。父母名单。一个孩子列表(例如可以是一个数组)如何绘制孩子以及如何绘制父母。

你应该有一个父母数组:String[] parents = {"parent1, "parent2"); 和一个孩子数组的数组,每个数组都是一个父母的孩子。

String [][] children = {{child_A_Parent1, child_B_Parent1}, {child_A_Parent2, child_B_parent2}};

在 getGroup 方法上,您应该返回给定行所需的父级:

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

在方法 getChild 你应该返回你想要的孩子:

public Object getChild(int groupPosition, int childPosition) {

        return children[groupPosition][childPosition];
    }

在 getChildView() 方法上,您应该扩展您想要的布局(例如带有 textview 的 xml)并使用相应的子项设置文本。请注意,在这里您不必担心它已经传递给哪个子参数:

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];
..}

父方法也可以这样说:

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

       tvParent.setText(parents[groupPosition];

}

您可以为父母和孩子设置各种布局。只需使用充气机从布局文件夹中充气 xml。然后使用资源 ID 用您的小部件填充视图。

希望这可以帮助您使数据适应此代码段。

于 2012-06-23T09:10:10.077 回答