两个ListView 实现 淘点点 点菜界面效果
2014-08-02 11:32
316 查看
昨天公司的项目里面需要用到类似淘点点点菜界面的那种界面效果,当时灵光一闪想出了实现方法,今天周末整理一下分享给大家,多多指正;先上一个淘点点的点菜界面图;右边listview 滑动的同时左边的listview的选中项要相应的改变,点击左边的listview的同时右边的listview的内容项要相应的滑动到正确的位置;</p><p>首先肯定是要在布局文件中添加两个listview,废话不多说直接说主要的;定义 一个数组供左边的listview使用,另外六个数给供右边的listview使用;
</pre><pre name="code" class="java">
</pre><pre name="code" class="java"> /** * 左边listview的要使用的数组 */ String[] arr = new String[] { "套餐A", "套餐B", "套餐C", "套餐D", "套餐E", "套餐F" }; String[] arr2 = new String[] { "1", "food", "food", "food", "food", "food" }; String[] arr3 = new String[] { "2", "food", "food", "food", "food", "food", "food" }; String[] arr4 = new String[] { "3", "food", "food", "food", "food" }; String[] arr5 = new String[] { "4", "food", "food", "food", "food", "food", "food", "food" }; String[] arr6 = new String[] { "5", "food", "food", "food" }; String[] arr7 = new String[] { "6", "food", "food", "food", "food", "food", "food", "food", "food", "food", "food", "food", "food", "food", "food" }; String[][] arr8 = new String[][] { arr2, arr3, arr4, arr5, arr6, arr7 }; /** * 用来存放 food数组 */ List<String> list; /** * 用来记录每一个 1 2 3 4 5 6 在右边listview的位置; */ List<Integer> nums = new ArrayList<Integer>();首先得计算出12345这几个数在list里面的位置,也就是在右边listview里面的位置;
list = new ArrayList<String>(); for (int j = 0; j < arr8.length; j++) { for (int j2 = 0; j2 < arr8[j].length; j2++) { list.add(arr8[j][j2]); } } for (int i = 0; i < arr8.length; i++) { if (i == 0) { nums.add(0); } else if (i > 0 && i < arr8.length) { int num = 0; for (int j = 0; j < i; j++) { num = num + arr8[j].length; } nums.add(num); } }设置左边listview的点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { for (int i = 0; i < listView.getChildCount(); i++) { if (i == position) { view.setBackgroundColor(Color.rgb(100, 100, 100)); } else { view.setBackgroundColor(Color.TRANSPARENT); } } listView2.setSelection(nums.get(position)); } });设置右边listview的滑动事件
listView2.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (nums.contains(firstVisibleItem) && listView.getChildCount() > 0) { for (int i = 0; i < listView.getChildCount(); i++) { if (i == nums.indexOf(firstVisibleItem)) { listView.getChildAt(i).setBackgroundColor( Color.rgb(100, 100, 100)); } else { listView.getChildAt(i).setBackgroundColor(Color.TRANSPARENT); } } } } });这里面需要指出的是,当创建出一个listview时有关listview的事件也会优先执行,其实这个时候另外一个listview还没有被创建,直接调 用listview.getChildAt()方法就会出错;所以在滑动事件里面添加了一个判断;下面是下载地址 http://download.csdn.net/detail/jixianwanmei999/7706397
相关文章推荐
- 【Android界面实现】listview中item的各种进入效果实现
- 如何实现ListView 不写adpater也可以看到,也可以在布局界面看到listview的效果
- 【Android界面实现】listview中item的各种进入效果实现
- android expandablelistview--实现类似qq界面的效果
- Android初级,实现网易云音乐歌曲列表界面效果,播放界面效果,ListView,ViewPager方法详解
- android expandablelistview--实现类似qq界面的效果
- 简单实现两个listView的联动效果(网络框架Retrofit+Rxjava)
- 仿饿了吗点餐界面两个ListView联动效果
- android expandablelistview--实现类似qq界面的效果
- VB2008中ListView两个常用效果的实现
- 简单实现两个listView的联动效果(网络框架Retrofit+Rxjava)
- 6步轻松实现两个listView联动效果
- 贴边隐藏、图形窗体等效果的实现:一个模仿QQ界面的MSN界面
- 使CxGrid实现如ListView一样的界面.
- 37个Ajax和CSS实现的Tab选项卡切换效果界面【转载】
- javascript 中ondragstart ondrag实现拖动界面元素效果
- 对《VB程序实现WindowsXP效果的界面》一文的补遗
- C++BUILDER中一些实现界面效果的技巧
- wpf界面展示关于ListView展示有倒影效果
- VB程序实现WindowsXP效果的界面!!