几行代码实现ListView的多级联动——多级联动就是如此简单

一二三四级联动,ListView联动,城市选择联动,SQLite轻量级数据库,城市数据库!!!

效果如下:

多级联动
项目介绍
  • 一二三四级联动,ListView联动,城市选择联动,SQLite轻量级数据库,城市数据库!!!
  • 基于项目本地的资源文件,SQLite轻量级数据库实现的城市选择器,数据库中城市数据基本齐全。
  • 本Demo是使用的ListView实现的联动,当然也可使用Fragment,在这里我只给出了一种方式。
  • 思路是融汇贯通的,我看网上大多都是三级联动,所以在这里给出一个很久之前写的四级联动,希望能够帮助到大家。
  • 注意:本Demo并不局限于数据库使用,如果您能够理解该思路&逻辑,使用json等其他方式都可实现更多级的联动。

    /**
     * 设置省
     */
    private void setProvince() {
        provinceValues=getProvince(countryValues.get(countryPosition).getPlaceid());
        if(!(provinceValues.isEmpty())){
            provinceAdapter=new LevelListViewAdapter(this, provinceValues);
            provinceAdapter.setSelectedPositionNoNotify(provincePosition, provinceValues);
            lv_province.setAdapter(provinceAdapter);
            provinceAdapter.setOnItemClickListener(new LevelListViewAdapter.OnItemClickListener() {
                @Override
                public void onItemClick(View view, int position) {
                    if(provinceNumber!=position){//记录不是当前点击的
                        provinceNumber=position;//就记录当前条目
                        provinceTime=System.currentTimeMillis();//并记录第一次时间戳
                        Timer timer=new Timer();
                        timer.schedule(new TimerTask() {
                            @Override
                            public void run() {
                                provinceNumber=-1;
                                provinceTime=0;
                            }
                        }, 300);
                    }else{//记录的是当前点击的
                        long num = System.currentTimeMillis()-provinceTime;//判断时间差,是不是双击
                        if(num<=300){//时间差200毫秒内
                            ToastUtil.showToast(MainActivity.this, provinceValues.get(position).getPlacename());
                        }
                        provinceNumber=-1;//重置过的记录
                        provinceTime=0;//重置时间的记录
                    }
                    cityValues.clear();
                    if(!(provinceValues.isEmpty())){
                        cityValues=getCity(provinceValues.get(position).getPlaceid());
                        cityAdapter.notifyDataSetChanged();
                        cityAdapter.setSelectedPositionNoNotify(0, cityValues);
                        lv_city.smoothScrollToPosition(0);
                    }else{
                        cityAdapter.notifyDataSetChanged();
                    }
                }
            });}
    }复制代码

设置国和州,省的方式是一样的,这里不在贴出
布局很简单:

...
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <ListView
            android:id="@+id/lv_continent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#ffffff"
            android:cacheColorHint="#00000000"
            android:divider="@null"
            android:dividerHeight="0dp"
            android:scrollbars="none" >
        </ListView>
<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <ListView
                android:id="@+id/lv_country"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:background="#ffffff"
                android:cacheColorHint="#00000000"
                android:divider="@null"
                android:dividerHeight="0dp"
                android:scrollbars="none" >
            </ListView>

            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:background="#c8c8c8" />
        </LinearLayout>
......复制代码

参考双联动ListView--类似外卖点餐:

github.com/wjie2014/Do…

github项目:

github.com/QQ986945193…

相信自己,没有做不到的,只有想不到的

如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :644196190
微信公众号:终端研发部

技术+职场
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值