安卓实现listview联动效果且选项多选

  


实现效果如图,点击大洲进行第一个listview数据的刷新且联动第二个listview数据更新,正常第二个listview是单选,点击后进行数据刷新,现在做的是数据多选最后点击确定按钮进行数据提交

首先实现两个listview联动效果:

数据源如下

  "area": [  {

                "id": "1009",
                "namecn": "海岛",
                "nameen": "island",
               "countryinfo": [
                    {
                        "id": "2535",
                        "namecn": "AAA",
                        "nameen": "Fiji",
                        "level": "1",
     

                    }

                   {
                        "id": "2222",
                        "namecn": "BBB",
                        "nameen": "Fiji",
                        "level": "1",
     
                    }

                ]

            }  

        ]


我们取出area下的namecn作为第一个listview的数据命名为FiestList,取出countyinfo下的字段namecn并且加入自己的标示字段Boolean类型的ischeck作为第二个listview的数据

private List<String> firstList = new ArrayList<>();
private List<List> secondList = new ArrayList<>();

FirstList数据为字符串类型, secondList数据为country下的多个对象

取出数据之后则是数据的填充和初始化

private void initFirstListView() {

    //加载第一个list界面的数据并且设置第一个为红色,并且 initSecondListView(0);是调用加载第二个
    firstAdapter = new SearchAreaFirstAdapter(HomeJieBanFragment.this.getActivity(), firstList);
    firstAdapter.setSelectPosition(0);//设置第一个为选中项
    listViewFirst.setAdapter(firstAdapter);

    initSecondListView(0);//初始化secondlist

    listViewFirst.setOnItemClickListener(new AdapterView.OnItemClickListener() {//点击第一个list执行的操作
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            updataListView(position);
        }
    });
}


下面来解释上面的每一步,初始化FirstAdapter的时候setselectPosition(0)详细方法如下


下面方法为初始化第二个list

private void initSecondListView(int position) {
    //初始化加载完第一个之后加载第二个list 载入secondList的第一排数据
    secondAdapter = new SearchAreaSecondAdapter(HomeJieBanFragment.this.getActivity(), secondList.get(position));
    //  secondAdapter.setSelectPosition(position);
    listViewSecond.setAdapter(secondAdapter);

    // updataListView2(position);//为了一进来的时候能取出第一项的数据
    listViewSecond.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            updataListView2(position);
        }
    });
初始化SecondList的时候对数据的ischeck做匹配,用来知道数据是否为选中状态


点击某一项的时候也来改变ischeck值,这样就能记录下secondlistview的是否选中展示了


代码片段不是很全面,总结来说就是secondlistview的数据是没有是否选中状态的,所以我们在得到json数据的过程中执行了一步操作就是把所有数据统一加入一个tag值:ischeck=false。初始化secondadapter时通过tag值来判断是否显示选中状态,点击某一项之后改变其tag值也相应改变其选中状态即可~

猜你喜欢

转载自blog.csdn.net/xiaoqiang_0719/article/details/73467745