您的位置:首页 > 其它

两个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: