打包位置与平面位置android扩展列表视图之间的区别

时间:2017-02-08 06:04:48

标签: android expandablelistview expandablelistadapter

我对可展开列表视图的平面位置和打包位置感到困惑。我在Google上搜索过,但我发现的是

  

平面列表位置:ListView及其适配器使用的位置

     

打包位置:一个长“打包”(bit twiddling)是什么类型的   position(group,child或null为header / footers)以及   位置值(组/子值)

但我仍然无法完全理解它。如果有人用例子解释我会很棒。

2 个答案:

答案 0 :(得分:2)

自己找到解决方案:

平面位置是屏幕上视图的索引,无论哪种类型(子级或组)。如此图所示

image

虽然打包位置是一个很长的,它的值很少,比如视图类型(子或组)和使用二元运算符编码的视图的平面位置(如和&|,shift { {1}}或<<)。

答案 1 :(得分:0)

可扩展列表视图:

可扩展列表视图用于按类别对列表数据进行分组。它具有在用户触摸标题时扩展和折叠组的功能。

为了创建可扩展的列表视图,我们需要三个xml布局文件。第一个是主列表视图,第二个是列表视图组项,第三个是列表视图子项。

创建一个名为ExpandableListAdapter.java的新类文件,并从BaseExpandableListAdapter扩展它。该类提供了渲染listview所需的方法。

getGroupView() – Returns view for the list group header
getChildView() – Returns view for list child item

对于创建适配器,您必须为ExpandableListView创建DataList,如下所示:

* Preparing the list data
     */
    private void prepareListData() {
        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();

        // Adding child data
        listDataHeader.add("OS");
        listDataHeader.add("LANGUAGE");
        listDataHeader.add("IDE");

        // Adding child data
        List<String> OS= new ArrayList<String>();
        OS.add("Windows");
        OS.add("Linux");
        OS.add("Android");
        OS.add("MAC");


        List<String> LANGUAGE= new ArrayList<String>();
        LANGUAGE.add("JAVA");
        LANGUAGE.add("C");
        LANGUAGE.add("C++");
        LANGUAGE.add("PHP");
        LANGUAGE.add("objective c");
        LANGUAGE.add("ROR");

        List<String> IDE= new ArrayList<String>();
        IDE.add("Android Studio");
        IDE.add("Eclipse");
        IDE.add("NetBeans");
        IDE.add("xcode");


        listDataChild.put(listDataHeader.get(0), OS); // Header, Child data
        listDataChild.put(listDataHeader.get(1), LANGUAGE);
        listDataChild.put(listDataHeader.get(2), IDE);
    }

请查看更多详细信息以了解可扩展列表视图

http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/