仿饿了吗点餐界面两个ListView联动效果

仿饿了吗点餐界面两个ListView联动效果,第1张

概述如图是效果图是仿饿了的点餐界面1.点击左侧的ListView,通过在在适配器中设置Item来改变颜色,再通过notifyDataSetInvalidated来刷新并用lv_home.setSelection(showTitle.get(arg2));来关联右侧的

如图是效果图

是仿饿了的点餐界面

1.点击左侧的ListVIEw,通过在在适配器中设置Item来改变颜色,再通过notifyDataSetInvalIDated来刷新并用lv_home.setSelection(showTitle.get(arg2));来关联右侧的

2.右侧的主要是重写下onScroll的方法;来改变左侧ListVIEw的颜色及背景

不过程序中还有个问题,望大神解答就是我右侧的ListVIEw下拉时,上面的TextVIEw能改变;但是上拉时,TextVIEw的不能及时改变应为滑动时我只拿了firstVisibleItem来判断的

Demo的连接:http://download.csdn.net/detail/qq_29774291/9634011

如下是主程序代码

package com.item.jIEjIE;import java.util.ArrayList;import java.util.List;import com.item.jIEjIE.adapter.HomeAdapter;import com.item.jIEjIE.adapter.MenuAdapter;import com.item.jIEjIE.entity.FoodData;import androID.Widget.AbsListVIEw.OnScrollListener;import androID.os.Bundle;import androID.app.Activity;import androID.text.TextUtils;import androID.util.Log;import androID.vIEw.VIEw;import androID.vIEw.Window;import androID.Widget.AdapterVIEw;import androID.Widget.AdapterVIEw.OnItemClickListener;import androID.Widget.AbsListVIEw;import androID.Widget.ListVIEw;import androID.Widget.TextVIEw;/*** 防饿了的ListVIEw联动的Demo* 有BUG* @author administrator**/public class MainActivity extends Activity {/**左侧菜单*/private ListVIEw lv_menu;/**右侧主菜*/private ListVIEw lv_home;private TextVIEw tv_Title;private MenuAdapter menuAdapter;private HomeAdapter homeAdapter;private int currentItem;/*** 数据源*/private List<FoodData> foodDatas;private String data[] = {"热销榜","新品套餐","便当套餐","单点菜品","饮料类","水果罐头","米饭"};/*** 里面存放右边ListVIEw需要显示标题的条目position*/private ArrayList<Integer> showTitle;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestwindowFeature(Window.FEATURE_NO_Title);setContentVIEw(R.layout.activity_main);setVIEw();setData();}private voID setVIEw() {// Todo auto-generated method stublv_menu = (ListVIEw)findVIEwByID(R.ID.lv_menu);tv_Title = (TextVIEw)findVIEwByID(R.ID.tv_titile);lv_home = (ListVIEw)findVIEwByID(R.ID.lv_home);foodDatas = new ArrayList<FoodData>();for(int i =0;i < data.length; i++){foodDatas.add(new FoodData(i,data[0] + i,data[0]));}for(int i =0;i < data.length -1; i++){foodDatas.add(new FoodData(i,data[1] + i,data[1]));}for(int i =0;i < data.length-2; i++){foodDatas.add(new FoodData(i,data[2] + i,data[2]));}for(int i =0;i < data.length-3; i++){foodDatas.add(new FoodData(i,data[3] + i,data[3]));}for(int i =0;i < data.length-4; i++){foodDatas.add(new FoodData(i,data[4] + i,data[4]));}for(int i =0;i < data.length-3; i++){foodDatas.add(new FoodData(i,data[5] + i,data[5]));}for(int i =0;i < 6; i++){foodDatas.add(new FoodData(i,data[6] + i,data[6]));}showTitle = new ArrayList<Integer>();for(int i = 0; i < foodDatas.size(); i++){if( i ==0){showTitle.add(i );System.out.println(i + "dd");}else if (!TextUtils.equals(foodDatas.get(i).getTitle(),foodDatas.get(i - 1).getTitle())) {showTitle.add(i );System.out.println(i + "dd");}}}private voID setData() {// Todo auto-generated method stubtv_Title.setText(foodDatas.get(0).getTitle());menuAdapter = new MenuAdapter(this);homeAdapter = new HomeAdapter(this,foodDatas);lv_menu.setAdapter(menuAdapter);lv_home.setAdapter(homeAdapter);lv_menu.setonItemClickListener(new OnItemClickListener() {@OverrIDepublic voID onItemClick(AdapterVIEw<?> arg0,VIEw arg1,int arg2,long arg3) {// Todo auto-generated method stubmenuAdapter.setSelectItem(arg2);menuAdapter.notifyDataSetInvalIDated();lv_home.setSelection(showTitle.get(arg2));tv_Title.setText(data[arg2]);}});lv_home.setonScrollListener(new OnScrollListener() {private int scrollState;@OverrIDepublic voID onScrollStateChanged(AbsListVIEw vIEw,int scrollState) {// Todo auto-generated method stub//System.out.println("onScrollStateChanged" + " scrollState" + scrollState);this.scrollState = scrollState;}@OverrIDepublic voID onScroll(AbsListVIEw vIEw,int firstVisibleItem,int visibleItemCount,int totalitemCount) {// Todo auto-generated method stubif (scrollState == AbsListVIEw.OnScrollListener.SCRolL_STATE_IDLE) { return; } Log.d("jIEjIE","onScroll" + " firstVisibleItem" + firstVisibleItem+" visibleItemCount" + visibleItemCount + " totalitemCount" + totalitemCount);int current =showTitle.indexOf(firstVisibleItem );System.out.println(current + "dd" + firstVisibleItem);// lv_home.setSelection(current);if(currentItem != current && current >=0){currentItem = current;tv_Title.setText(data[current]);menuAdapter.setSelectItem(currentItem);menuAdapter.notifyDataSetInvalIDated();}}});}}

左侧ListVIEw的适配器代码

package com.item.jIEjIE.adapter;import com.item.jIEjIE.R;import androID.content.Context;import androID.graphics.color;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.BaseAdapter;import androID.Widget.TextVIEw;/*** 左侧菜单ListVIEw的适配器* @author administrator**/public class MenuAdapter extends BaseAdapter{private Context context;private int selectItem = 0;private String data[] = {"热销榜","米饭"};public MenuAdapter(Context context) {this.context = context;}public int getSelectItem() {return selectItem;}public voID setSelectItem(int selectItem) {this.selectItem = selectItem;}@OverrIDepublic int getCount() {// Todo auto-generated method stubreturn data.length;}@OverrIDepublic Object getItem(int arg0) {// Todo auto-generated method stubreturn null;}@OverrIDepublic long getItemID(int arg0) {// Todo auto-generated method stubreturn 0;}@OverrIDepublic VIEw getVIEw(int arg0,VIEwGroup arg2) {// Todo auto-generated method stubVIEwHolder holder = null;if(arg1 == null) {holder = new VIEwHolder();arg1 = VIEw.inflate(context,R.layout.item_menu,null);holder.tv_name = (TextVIEw)arg1.findVIEwByID(R.ID.item_name);arg1.setTag(holder);}else {holder = (VIEwHolder)arg1.getTag();}if(arg0 == selectItem){holder.tv_name.setBackgroundcolor(color.WHITE);holder.tv_name.setTextcolor(context.getResources().getcolor(R.color.text_green));}else {holder.tv_name.setBackgroundcolor(context.getResources().getcolor(R.color.ll_coachback));holder.tv_name.setTextcolor(context.getResources().getcolor(R.color.text_deep));}holder.tv_name.setText(data[arg0]);return arg1;}static class VIEwHolder{private TextVIEw tv_name;}}

右侧的适配器代码

package com.item.jIEjIE.adapter;import java.util.List;import com.item.jIEjIE.R;import com.item.jIEjIE.entity.FoodData;import androID.content.Context;import androID.text.TextUtils;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.BaseAdapter;import androID.Widget.TextVIEw;/*** 右侧主界面ListVIEw的适配器* * @author administrator* */public class HomeAdapter extends BaseAdapter {private Context context;private List<FoodData> foodDatas;public HomeAdapter(Context context,List<FoodData> foodDatas) {this.context = context;this.foodDatas = foodDatas;}@OverrIDepublic int getCount() {// Todo auto-generated method stubif(foodDatas!=null){return foodDatas.size();}else { return 10;} }@OverrIDepublic Object getItem(int arg0) {// Todo auto-generated method stubreturn null;}@OverrIDepublic long getItemID(int arg0) {// Todo auto-generated method stubreturn 0;}@OverrIDepublic VIEw getVIEw(int arg0,VIEwGroup arg2) {// Todo auto-generated method stubVIEwHold holder = null;if(arg1 == null){arg1 = VIEw.inflate(context,R.layout.item_home,null);holder = new VIEwHold();holder.tv_Title = (TextVIEw)arg1.findVIEwByID(R.ID.item_home_Title);holder.tv_name = (TextVIEw)arg1.findVIEwByID(R.ID.item_home_name);arg1.setTag(holder);}else {holder = (VIEwHold)arg1.getTag();}holder.tv_name.setText(foodDatas.get(arg0).getname());holder.tv_Title.setText(foodDatas.get(arg0).getTitle());if(arg0 == 0){holder.tv_Title.setVisibility(VIEw.VISIBLE);}else if (!TextUtils.equals(foodDatas.get(arg0).getTitle(),foodDatas.get(arg0 -1).getTitle())) {holder.tv_Title.setVisibility(VIEw.VISIBLE);}else {holder.tv_Title.setVisibility(VIEw.GONE);}return arg1;}private static class VIEwHold{private TextVIEw tv_Title;private TextVIEw tv_name;}}

以上所述是小编给大家介绍的仿饿了点餐界面2个ListVIEw联动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的仿饿了吗点餐界面两个ListView联动效果全部内容,希望文章能够帮你解决仿饿了吗点餐界面两个ListView联动效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1148089.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存