实现思路:
1.先说右边标题:
首先,右边的数据源集合中的Javabean中含有三个属性name,type,title,而每个条目中会默认含有一个标题.
如果这是第一个条目,就让标题显示出来,再如果这个条目的类型和上一个条目的类型不一样,就让这个条目的标题显示出来,否则,就隐藏标题, 这样我们就做到了每种类型只有第一个数据标题显示出来
接着,在Listview的外层(也就是MainActivity的布局文件中),默认放一个标题(下面都称作是主标题)
最后,设置右边Listview的滚动监听事件 在onScroll方法中,我们要做两件事:
第一件事是每当前第一个可见条目的类型和当前左边Listview选择的类型(红色字体的类型) 不一样时,需要将主标题的内容改变
第二件事 同时切换左边Listview的选中状态
2.再说左边的Listview
左边的Listview需要设置条目点击事件,在点击事件中需要干三件事:
第一 将左边点击条目的字体颜色改变
第二 将右边Listview滚动至左边Listview所选择类型相同的区域
第三 改变主标题的内容
说到这,大家可能还是云里雾里的,还是不知道左边的类型和右边的类型是怎么关联起来的?没关系,在下面的代码解析中你就会明白!下边是具体的实现步骤:
一.写布局
1.在MainActivity的布局文件中 添加应有的控件
1 <span><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="horizontal" 6 tools:context=".MainActivity" > 7 8 <ListView 9 android:id="@+id/lv_left" 10 android:layout_width="0dp" 11 android:layout_height="match_parent" 12 android:layout_weight="1" > 13 </ListView> 14 15 <RelativeLayout 16 android:layout_width="0dp" 17 android:layout_height="match_parent" 18 android:layout_weight="3" > 19 20 <ListView 21 android:id="@+id/lv_Right" 22 android:layout_width="match_parent" 23 android:layout_height="match_parent" > 24 </ListView> 25 26 <TextView 27 android:id="@+id/tv_title" 28 android:layout_width="match_parent" 29 android:layout_height="wrap_content" 30 android:background="#9f9f9f" 31 android:gravity="center" 32 android:padding="5dp" 33 android:textColor="#000000" 34 android:textSize="18sp" /> 35 </RelativeLayout> 36 37 </LinearLayout></span>