你的位置:首页 > 软件开发 > 操作系统 > 仿饿了点餐界面2个ListView联动

仿饿了点餐界面2个ListView联动

发布时间:2016-09-19 19:00:03
如图是效果图是仿饿了的点餐界面1.点击左侧的ListView,通过在在适配器中设置Item来改变颜色,再通过notifyDataSetInvalidated来刷新并用lv_home.setSelection(showTitle.get(arg2));来关联右侧的2.右侧的主要是重 ...

仿饿了点餐界面2个ListView联动

如图是效果图仿饿了点餐界面2个ListView联动

是仿饿了的点餐界面

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;  @Override  protected 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 stub    lv_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 stub    tv_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() {      @Override      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,          long arg3) {        // TODO Auto-generated method stub        menuAdapter.setSelectItem(arg2);        menuAdapter.notifyDataSetInvalidated();        lv_home.setSelection(showTitle.get(arg2));                        tv_title.setText(data[arg2]);              }    });    lv_home.setOnScrollListener(new OnScrollListener() {      private int scrollState;            @Override      public void onScrollStateChanged(AbsListView view, int scrollState) {        // TODO Auto-generated method stub        //System.out.println("onScrollStateChanged" + "  scrollState" + scrollState);        this.scrollState = scrollState;      }            @Override      public void onScroll(AbsListView view, int firstVisibleItem,          int visibleItemCount, int totalItemCount) {        // TODO Auto-generated method stub        if (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();        }      }    });  }}

原标题:仿饿了点餐界面2个ListView联动

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。