Android listview适配器基于父级和子级创建行

Android listview适配器基于父级和子级创建行,android,android-listview,android-arrayadapter,Android,Android Listview,Android Arrayadapter,案例1:我想在一行中显示一个孩子 案例2:我想在一行中显示所有的孩子 因为我的getView()方法是为每个子对象调用的,所以它只显示第一种情况 我无法获得案例2,任何帮助或提示都将不胜感激。谢谢。在自定义适配器的getView()方法中,如果希望所有子项都有一行,请添加以下foreach循环: 假设: -allTheChildren是ArrayList,其中包含调用自定义适配器的父级的所有子级。 -getValue()方法是返回子对象内容的方法。 -rowView=表示ListView中每一行

案例1:我想在一行中显示一个孩子

案例2:我想在一行中显示所有的孩子

因为我的getView()方法是为每个子对象调用的,所以它只显示第一种情况

我无法获得案例2,任何帮助或提示都将不胜感激。谢谢。

在自定义适配器的getView()方法中,如果希望所有子项都有一行,请添加以下foreach循环:

假设: -allTheChildren是ArrayList,其中包含调用自定义适配器的父级的所有子级。 -getValue()方法是返回子对象内容的方法。 -rowView=表示ListView中每一行的布局。 -textView=设置子级的textView(这是rowView布局的一部分)

这样,如果您有多个子项,您可以对它们进行迭代,并将它们附加到一个字符串中,该字符串在最后添加到textview,因此位于同一行


我这里缺少有价值的信息,所以我不能确切地建议您需要编写的代码。替换为您拥有的适当变量和类型。

您的Children类的内容是什么?是否将每个子字符串保存在数组ArrayList中?我有两个模型,一个用于父字符串,另一个用于子字符串。在适配器类m中获取ArrayList数据;。但是我的getItem是基于Children的,我不确定我是否理解这一点。什么是Pair?我的listview有节,所有父标签都是节,子元素的Arraylist是行。我也可以这样做,但问题是我的getView()方法被调用为该父元素的=“childs count”。例如,如果父对象有5个子对象,则对同一父对象调用getView()五次。但我希望getView()应该只为该父级调用一次。我只是做假设,因为我没有您的代码。在调用自定义适配器的地方,您很可能通过迭代子ArrayList来调用它。创建(如果没有)一个方法来获取所有父级,并遍历新方法返回的ArrayList。如果没有代码,我就无法给出更好的解决方案。我得到了一个解决方案,我需要更改我的getView()方法。我必须根据布尔值返回不同的对象@重写公共对象getItem(int位置){..返回对象;}现在我必须在父对象或子对象中强制转换该对象。视情况而定。
"parent": [
       {        
           "type": "Category",
           "label": "Transition",    
           "isButtonGroup": false,
           "children": [
                  {
                       "label": "Date Of case (Est.)",
                       "questionType": "DateTime",
                  },
                  {
                       "label": "Benchmark",
                       "questionType": "Float",
                  },

@Override
    public Children getItem(int position) {
          .....
        return Children ;
    }
String theFinalStrng = "";     
for (Child c : allTheChildren) {
    theFinalString = theFinalString + c.getValue() + " ";
}
textView.setText(theFinalString);
return rowView;