`

listView三级联动

 
阅读更多

先看例子演示:



部分代码:

package mm.shandong.com.testthreeregion;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import mm.shandong.com.testthreeregion.adapter.FirstSearchAreaAdapter;
import mm.shandong.com.testthreeregion.adapter.SecondSearchAreaAdapter;
import mm.shandong.com.testthreeregion.adapter.ThirdSearchAreaAdapter;

public class TestThreeRegionActivity extends AppCompatActivity {
    ListView listView1;
    ListView listView2;
    ListView listView3;
    FirstSearchAreaAdapter firstSearchAreaAdapter;
    SecondSearchAreaAdapter secondSearchAreaAdapter;
    ThirdSearchAreaAdapter thirdSearchAreaAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_three_region);
        listView1 = (ListView) findViewById(R.id.listView1);
        listView2 = (ListView) findViewById(R.id.listView2);
        listView3 = (ListView) findViewById(R.id.listView3);
        initFirstListView();

    }
    //初始化第一个ListView
    public void initFirstListView() {
        firstSearchAreaAdapter = new FirstSearchAreaAdapter(this, Constant.firstNameArray);
        firstSearchAreaAdapter.selectPosition = 0;
        listView1.setAdapter(firstSearchAreaAdapter);
        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view,
                                      int position, long l) {
                if (firstSearchAreaAdapter.selectPosition != position) {
                    updateFirstListView(position);
                }
            }
        });
        initSecondListView(0);
    }
    //初始化第二个ListView
    public void initSecondListView(int position) {
        secondSearchAreaAdapter = new SecondSearchAreaAdapter(this,
                Constant.secondNameArray[position]);
        secondSearchAreaAdapter.selectPosition = 0;
        listView2.setAdapter(secondSearchAreaAdapter);
        listView2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView,
                                         View view, int position, long l) {
                if (secondSearchAreaAdapter.selectPosition != position) {
                    updateSecondListView(position);
                }
            }
        });
        initThirdListView(0);
    }
    //初始化第三个ListView
    public void initThirdListView(int position) {
      ///如果第一个listView选择的是地铁,那么第三个listView就显示出来,否则就隐藏
        if ("地铁".equals(firstSearchAreaAdapter.
                  getItem(firstSearchAreaAdapter.selectPosition))) {
            thirdSearchAreaAdapter =
                     new ThirdSearchAreaAdapter(this, Constant.thirdNameArray[position]);
            thirdSearchAreaAdapter.selectPosition = 0;
            listView3.setAdapter(thirdSearchAreaAdapter);
        } else {
            listView3.setVisibility(View.GONE);
        }

    }

    public void updateFirstListView(int position) {
        firstSearchAreaAdapter.selectPosition = position;
        firstSearchAreaAdapter.notifyDataSetChanged();
        secondSearchAreaAdapter.setDatas(Constant.secondNameArray[position]);
        updateSecondListView(0);
    }

    public void updateSecondListView(int position) {

        secondSearchAreaAdapter.selectPosition = position;
        secondSearchAreaAdapter.notifyDataSetChanged();
        if ("地铁".equals(firstSearchAreaAdapter.
                 getItem(firstSearchAreaAdapter.selectPosition))) {
            if (thirdSearchAreaAdapter == null) {
                thirdSearchAreaAdapter =
                        new ThirdSearchAreaAdapter(this, Constant.thirdNameArray[position]);
                // thirdSearchAreaAdapter.selectPosition=0;
                listView3.setAdapter(thirdSearchAreaAdapter);
            } else {
                thirdSearchAreaAdapter.setDatas(Constant.thirdNameArray[position]);
                updateThirdListView(0);
            }
            listView3.setVisibility(View.VISIBLE);
        } else {
            listView3.setVisibility(View.GONE);
        }

    }

    public void updateThirdListView(int position) {

        //   thirdSearchAreaAdapter.selectPosition=position;
        thirdSearchAreaAdapter.notifyDataSetChanged();

    }
}
Demo下载


最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:http://android.myapp.com/myapp/detail.htm?apkName=com.shandong.mm.androidstudy,源码例子文档一网打尽。


分享到:
评论

相关推荐

    ListView三级联动效果

    当涉及到“三级联动”效果时,我们通常指的是在ListView中嵌套多个级别的选择器,例如第一级选择后会影响第二级的显示,第二级选择后再影响第三级的显示,以此类推。这种设计常见于导航菜单、地区选择或者商品分类等...

    Android ListView三级联动实现地址选择器

    本文将深入探讨如何使用ListView来实现一个三级联动的地址选择器,类似于iOS中的PickerView或滚轮视图(wheelView)效果。 首先,我们需要准备三级数据,即省份、城市和区县的数据。这些数据通常以JSON格式存储,每...

    android 高仿京东,美团网三级联动

    在Android开发中,实现类似京东、美团这样的三级联动菜单是一项挑战性的任务,它涉及到复杂的UI交互和数据层次结构的管理。这个项目通过双ListView成功地实现了这一功能,并且具有90%的相似度,这对于开发者来说是一...

    Node.js-一二三四级联动ListView联动城市选择联动

    在“Node.js-一二三四级联动ListView联动城市选择联动”项目中,我们主要关注的是如何在Android应用中实现多级联动的城市选择功能,这涉及到ListView的联动效果、数据处理以及可能用到的SQLite轻量级数据库。...

    安卓三级联动省市联动多级联动相关-android多级菜单经典demo.zip

    在Android开发中,"三级联动省市联动多级联动"是一种常见的功能需求,特别是在涉及地理位置选择、数据筛选或者信息填写的场景。这个经典demo是针对这种需求的一个实例展示,旨在帮助开发者理解和实现这样的交互效果...

    安卓三级联动省市联动多级联动相关-过滤功能的下拉菜单[类似美团58同城]里面包含eclipse和AS的代码.rar

    在Android开发中,"三级联动省市联动多级联动"是一种常见的功能,常见于地图应用、电商网站、生活服务类APP等,例如美团和58同城。这个功能涉及到多个选择项的联动更新,用户首先选择省份,接着根据省份选择城市,...

    安卓三级联动省市联动多级联动相关-仿美团弹出分类选择框左右两个listview联动.rar

    此项目“安卓三级联动省市联动多级联动相关-仿美团弹出分类选择框左右两个listview联动.rar”显然是一个示例应用,模仿了美团App中的弹出分类选择框,其特点在于利用了两个ListView实现左右联动的效果。 首先,我们...

    三级联动选择器 (Android版)

    在Android开发中,三级联动选择器是一种常见的交互组件,尤其在处理地理位置选择或者分类筛选时十分常见。这个组件模拟了淘宝手机客户端收货地址的选择流程,让用户能够通过连续的下拉菜单来选取省、市、区(县)三...

    安卓三级联动省市联动多级联动相关-Android实现城市名称和编码的选择省份与城市的联动并且获得城市编号为后面天气预报调用Api提供帮助.rar

    在Android开发中,"三级联动省市联动多级联动"是一个常见的需求,特别是在涉及到地理位置选择、地址输入或服务定位等场景。这个技术主要涉及到用户界面(UI)设计、数据管理以及事件处理等方面。在这个项目中,...

    Android竖直滑动选择器,三级联动,二级联动

    "三级联动"是指在用户界面中,当用户在一个级别上做出选择时,下一个级别的选项会根据前一级的选择动态更新。这种设计常见于地区选择、商品分类等场景,比如省市县的三级联动选择。而"二级联动"则是类似的概念,但只...

    滑动三级联动

    在Android开发中,"滑动三级联动"是一种常见的交互设计,尤其在地址选择、筛选条件等场景中应用广泛。这种设计通常涉及到多个列表视图的联动,用户在每一级选择一个选项后,下一级的选择范围会根据上一级的选中结果...

    三级联动demo

    在Android应用开发中,"三级联动"是一种常见的交互设计,特别是在数据选择或者过滤场景下,如省市区选择、商品分类筛选等。这个"三级联动demo"是基于Android Studio的一个项目实例,它展示了如何实现三个层次的数据...

    安卓三级联动省市联动多级联动相关-Android竖直滑动选择器三级联动二级联动.rar

    在Android开发中,"三级联动省市联动多级联动"是一种常见的功能需求,特别是在涉及地理位置选择、分类筛选等场景。这个压缩包"安卓三级联动省市联动多级联动相关-Android竖直滑动选择器三级联动二级联动.rar"包含了...

    android 城市三级联动

    在Android开发中,城市三级联动是一种常见的功能,用于在用户选择城市时提供省-市-区的逐级筛选。这个功能通常用在地址输入、物流配送等场景,它需要一个高效的UI交互和数据管理机制。下面我们将深入探讨如何实现这...

    省市区三级联动Demo

    在Android开发中,"省市区三级联动Demo"是一种常见的需求,尤其在地址选择、信息填写等场景中。这个项目提供了一个实现三级联动效果的实例,包括使用Fragment和Pop两种方式,方便开发者理解和应用。 首先,我们要...

    ANDROID 地址三级联动

    在Android开发中,"地址三级联动"是一种常见的功能,它涉及到省、市、区三个级别的地址选择,并且这三个级别通常是相互关联的。当用户选择一个省份时,对应的市列表会自动更新;同样,选择一个市后,对应的区列表也...

    安卓三级联动省市联动多级联动相关-省市区三级联动.rar

    在Android开发中,"三级联动"是一个常见的需求,特别是在处理涉及地理位置信息的用户界面时,如地址选择。这个"安卓三级联动省市联动多级联动"的压缩包文件提供了一个实现省市区三级联动选择的示例。下面将详细介绍...

    安卓三级联动省市联动多级联动相关-仿京东商城选择地区样式Demo.rar

    在Android开发中,"三级联动省市联动多级联动"是一种常见的功能需求,特别是在电商应用中,用户需要选择收货地址时。此功能涉及到省、市、区(县)的逐级选择,每级的选择结果会影响到下一级的选择项。在本案例中,...

    安卓省市区三级联动demo

    在Android开发中,"三级联动"是一个常见的功能需求,尤其在地址选择、分类筛选等场景中。本示例"安卓省市区三级联动demo"提供了一个完整的解决方案,帮助开发者实现一个流畅且高效的地区选择器。下面将详细介绍这个...

    安卓三级联动省市联动多级联动相关-仿美团等选择城市列表demo.rar

    在安卓开发中,"三级联动省市联动多级联动"是一种常见的功能设计,特别是在涉及地理位置选择的应用中,如美团等生活服务类应用。这个概念是指在用户界面中,通过三个级别(省、市、区/县)的选择器进行联动,用户在...

Global site tag (gtag.js) - Google Analytics