安卓实现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值也相应改变其选中状态即可~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoqiang_0719

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值