几行代码实现多级ListView的多级联动效果
Posted 终端研发部
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了几行代码实现多级ListView的多级联动效果相关的知识,希望对你有一定的参考价值。
一个ListView的多级联动效果
https://github.com/QQ986945193/DialogLoadding
一二三四级联动,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--类似外卖点餐:
https://github.com/wjie2014/DoubleListViewLinkage
github项目:
https://github.com/QQ986945193/DialogLoadding
终端研发部提倡: 没有做不到的,只有想不到的。
在这里获得的不仅仅是技术!
让心,在阳光下学会舞蹈
让灵魂,在痛苦中学会微笑
—终端研发部—
如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809
这里学到不仅仅是技术
以上是关于几行代码实现多级ListView的多级联动效果的主要内容,如果未能解决你的问题,请参考以下文章
element el-cascader动态加载数据 (多级联动,落地方案)
element el-cascader动态加载数据 (多级联动,落地方案)