美团外卖菜单界面的Android实现代码,供大家参考,具体内容如下

布局文件

总布局

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:orientation="horizontal"

tools:context="com.example.a1_.activity.MainActivity">

android:id="@+id/lv_left"

android:layout_width="100dp"

android:layout_height="match_parent">

android:id="@+id/lv_right"

android:layout_width="match_parent"

android:layout_height="match_parent">

左侧布局

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_margin="10dp"

android:id="@+id/tv_title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:text="菜单类别"

android:textSize="18sp" />

右侧布局

android:layout_width="wrap_content"

android:layout_height="65dp"

android:orientation="vertical">

android:src="@mipmap/ic_launcher"

android:layout_margin="4dp"

android:id="@+id/iv"

android:layout_width="50dp"

android:layout_height="50dp" />

android:layout_toRightOf="@id/iv"

android:orientation="vertical"

android:layout_margin="4dp"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:text="洋芋粉炒腊肉"

android:textSize="20sp"

android:id="@+id/tv_right_title1"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

android:id="@+id/tv_right_title2"

android:text="洋芋粉炒腊肉"

android:textSize="16sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

android:id="@+id/tv_right_count"

android:text="月销售54份"

android:textSize="18sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

适配器

左侧适配器

package com.example.a1_.adapter;

import android.graphics.Color;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

import com.example.a1_.Bean.LeftBean;

import com.example.a1_.R;

import java.util.List;

/**

* Created by Administrator on 2017.05.27.0027.

*/

public class LeftAdapter extends BaseAdapter {

private List mList;

private int currentLeftItem = 0;

//创建一个构造方法

public LeftAdapter(List mList) {

this.mList = mList;

}

@Override

public int getCount() {

return mList.size();

}

@Override

public LeftBean getItem(int position) {

return mList.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder = null;

if (convertView==null){

convertView = View.inflate(parent.getContext(), R.layout.left_item,null);

//创建viewHolder对象

viewHolder = new ViewHolder();

viewHolder.tv_title = (TextView) convertView.findViewById(R.id.tv_title);

//让viewholder挂在convertview上面一起复用

convertView.setTag(viewHolder);

}else {

//当convertView不为空时,吧viewholder取出来

viewHolder = (ViewHolder) convertView.getTag();

}

//获取对应条目的内容

LeftBean leftBean = getItem(position);

//把对应条目的内容设置在控件上

viewHolder.tv_title.setText(leftBean.title);

//给左侧条目设置颜色

if (currentLeftItem ==position){

viewHolder.tv_title.setTextColor(Color.RED);

}

return convertView;

}

public void setCurrentSelect(int currentLeftItem){

this.currentLeftItem = currentLeftItem;

}

//创建一个viewholder,用来复用对象

class ViewHolder{

TextView tv_title;

}

}

右侧适配器

package com.example.a1_.adapter;

import android.content.Context;

import android.graphics.Color;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ListView;

import android.widget.TextView;

import com.example.a1_.Bean.LeftBean;

import com.example.a1_.Bean.RightBean;

import com.example.a1_.R;

import java.util.List;

import java.util.Random;

import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter;

/**

* Created by Administrator on 2017.05.27.0027.

*/

public class RightAdapter extends BaseAdapter implements StickyListHeadersAdapter {

private List mLeft;

private List mRight;

private Context context;

public RightAdapter(List mLeft, List mRight, Context context) {

this.mLeft = mLeft;

this.mRight = mRight;

this.context = context;

}

@Override

public View getHeaderView(int position, View convertView, ViewGroup parent) {

TextView tv = new TextView(context);

tv.setTextColor(Color.RED);

tv.setTextSize(18);

tv.setText(mRight.get(position).type);

return tv;

}

@Override

public long getHeaderId(int position) {

return mRight.get(position).typeId;

}

@Override

public int getCount() {

return mRight.size();

}

@Override

public RightBean getItem(int position) {

return mRight.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder = null;

if (convertView==null){

convertView = View.inflate(context, R.layout.right_item,null);

viewHolder = new ViewHolder();

viewHolder.title1 = (TextView) convertView.findViewById(R.id.tv_right_title1);

viewHolder.title2 = (TextView) convertView.findViewById(R.id.tv_right_title2);

viewHolder.count = (TextView) convertView.findViewById(R.id.tv_right_count);

convertView.setTag(viewHolder);

}else {

viewHolder = (ViewHolder) convertView.getTag();

}

RightBean rightBean = mRight.get(position);

viewHolder.title1.setText(rightBean.biaoti);

viewHolder.title2.setText(rightBean.biaoti);

//使用Random获取随机数

Random random = new Random();

int i = random.nextInt(100);

viewHolder.count.setText("月销量"+i+"份");

return convertView;

}

static class ViewHolder{

TextView title1;

TextView title2;

TextView count;

}

}

javabean文件

左侧

package com.example.a1_.Bean;

public class LeftBean {

public String title;

public int type;

}

右侧

package com.example.a1_.Bean;

import android.R.string;

public class RightBean {

public String biaoti;

public String type;

public int typeId;

}

数据源

package com.example.a1_.data;

import com.example.a1_.Bean.LeftBean;

import com.example.a1_.Bean.RightBean;

import java.util.ArrayList;

import java.util.List;

/**

* Created by wangcaisheng on 2017/5/27.

*/

public class Data {

private static String[] leftData = new String[]{"13.9特价套餐","粗粮主食","佐餐小吃","用心营养套餐(不含主食)","三杯鸡双拼尊享套餐","带鱼双拼尊享套餐","红烧肉双拼尊享套餐"};

private static String[] rightData0 = new String[]{"洋芋粉炒腊肉","土鸡炖香菇","新疆大盘辣子土鸡","清炖土鸡块","农家蒸碗 ","香辣野猪肉","香辣薯条大虾","麻辣猪血"};

private static String[] rightData1 = new String[]{"商芝扣肉","羊肉萝卜","干烧鱼 ","干煸野猪肉 ","排骨火锅","土鸡火锅","牛肉火锅","狗肉火锅 "};

private static String[] rightData2 = new String[]{"虎皮辣子炒咸肉","重庆飘香水煮鱼","红烧土鸡块","干煸辣子土鸡","清炖全鸡 "};

private static String[] rightData3 = new String[]{"洋芋粉炒腊肉","土鸡炖香菇","新疆大盘辣子土鸡","清炖土鸡块","农家蒸碗 ","香辣野猪肉","香辣薯条大虾","麻辣猪血"};

private static String[] rightData4 = new String[]{"洋芋粉炒腊肉","土鸡炖香菇","新疆大盘辣子土鸡","清炖土鸡块","农家蒸碗 ","香辣野猪肉","香辣薯条大虾","麻辣猪血"};

private static String[] rightData5 = new String[]{"洋芋粉炒腊肉","土鸡炖香菇","新疆大盘辣子土鸡","清炖土鸡块","农家蒸碗 ","香辣野猪肉","香辣薯条大虾","麻辣猪血"};

private static String[] rightData6 = new String[]{"洋芋粉炒腊肉","土鸡炖香菇","新疆大盘辣子土鸡","清炖土鸡块","农家蒸碗 ","香辣野猪肉","香辣薯条大虾","麻辣猪血"};

public static List getLeftData(){

List list = new ArrayList();

for (int i = 0; i < leftData.length; i++) {

LeftBean bean = new LeftBean();

bean.title = leftData[i];

bean.type = i;

list.add(bean);

}

return list;

}

public static List getRightData(List list){

List rightList = new ArrayList();

for (int i = 0; i < list.size(); i++) {

LeftBean leftBean = list.get(i);

int mType = leftBean.type;

switch (mType) {

case 0:

rightList = getRightList(rightData0, leftBean, mType, rightList);

break;

case 1:

rightList = getRightList(rightData1, leftBean, mType, rightList);

break;

case 2:

rightList = getRightList(rightData2, leftBean, mType, rightList);

break;

case 3:

rightList = getRightList(rightData3, leftBean, mType, rightList);

break;

case 4:

rightList = getRightList(rightData4, leftBean, mType, rightList);

break;

case 5:

rightList = getRightList(rightData5, leftBean, mType, rightList);

break;

case 6:

rightList = getRightList(rightData6, leftBean, mType, rightList);

break;

}

}

return rightList;

}

private static List getRightList(String[] arr, LeftBean leftBean, int mType, List rightList){

for (int j = 0; j < arr.length; j++) {

RightBean bean = new RightBean();

bean.type = leftBean.title;

bean.biaoti = arr[j];

bean.typeId = mType;

rightList.add(bean);

}

return rightList;

}

}

核心代码

package com.example.a1_.activity;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ListView;

import com.example.a1_.Bean.LeftBean;

import com.example.a1_.Bean.RightBean;

import com.example.a1_.R;

import com.example.a1_.adapter.LeftAdapter;

import com.example.a1_.adapter.RightAdapter;

import com.example.a1_.data.Data;

import java.util.List;

import se.emilsjolander.stickylistheaders.StickyListHeadersListView;

public class MainActivity extends AppCompatActivity {

private ListView lv_left;

private StickyListHeadersListView lv_right;

private int currentLeftItem;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initData();

}

//初始化控件

private void initView() {

//初始化控件

lv_left = (ListView) findViewById(R.id.lv_left);

lv_right = (StickyListHeadersListView) findViewById(R.id.lv_right);

}

//设置适配器

private void initData() {

//创建适配器

final LeftAdapter leftAdapter = new LeftAdapter(Data.getLeftData());

//获取左侧数据

final List leftData = Data.getLeftData();

//获取右侧数据

final List rightData = Data.getRightData(leftData);

RightAdapter rightAdapter = new RightAdapter(leftData, rightData, this);

//为左侧布局设置适配器

lv_left.setAdapter(leftAdapter);

lv_right.setAdapter(rightAdapter);

//为左侧条目设置点击事件

lv_left.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

//当左侧条目被点击时,记录下被点击条目的type

int type = leftData.get(position).type;

//遍历右侧条目,并获取右侧条目的typeId,与刚刚获取的type对比,是否一致

for (int i = 0; i < rightData.size(); i++) {

if (type == rightData.get(i).typeId) {

//如果找到对应的条目,那就将右侧条目滚动至对应条目,并跳出循环

lv_right.smoothScrollToPosition(i);

currentLeftItem = i;

//设置当前被选中的左侧条目

leftAdapter.setCurrentSelect(currentLeftItem);

//刷新数据适配器

leftAdapter.notifyDataSetChanged();

break;

}

}

// Toast.makeText(MainActivity.this, "您选中了"+leftData.get(position).title, Toast.LENGTH_SHORT).show();

}

});

//为右侧条目设置点击事件

lv_right.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

// Toast.makeText(MainActivity.this, "右侧条目被点击了"+position, Toast.LENGTH_SHORT).show();

//当右侧条目被点击时,获取被点击条目的typeId

int typeId = rightData.get(position).typeId;

//遍历左侧条目

for (int i = 0; i < leftData.size(); i++) {

//获取左侧条目的type,与右侧条目的typeId对比是否一致

if (typeId == leftData.get(i).type) {

//说明找到了对应条目,跳出循环,设置当前被选中的条目

currentLeftItem = i;

//设置当前被选中的左侧条目

leftAdapter.setCurrentSelect(currentLeftItem);

//刷新数据适配器

leftAdapter.notifyDataSetChanged();

break;

}

}

}

});

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android 仿美团骑手地图_Android仿美团外卖菜单界面相关推荐

  1. android 仿美团骑手地图_Android仿美团地址选择

    最近做了这个功能,分享一下,用的是百度地图api,和美团外卖的地址选择界面差不多,也就是可以搜索或者滑动地图展示地址列表给用户选择,看下效果图先. addressSelect.gif 文章重点 1.展 ...

  2. 仿美团外卖菜单界面的实现

    仿美团外卖菜单界面的实现 布局文件 总布局 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  3. android 微信浮窗实现_Android仿微信视屏悬浮窗效果

    在项目中需要对接入的腾讯云音视频,可以悬浮窗显示,悬浮窗可拖拽,并且在悬浮窗不影响其他的activity的焦点. 这个大神的文章Android基于腾讯云实时音视频仿微信视频通话最小化悬浮,他讲的是视频 ...

  4. android 仿微信选取相册_Android 仿微信 相册多图选择器

    下载方式 com.sh.zsh.code shphotoselectorlibrary 2.0.9 pom or Gradle: compile 'com.sh.zsh.code:shphotosel ...

  5. android 辐射动画_Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)

    不知不觉这个春节也已经过完了,遗憾家里没网,没能及时给大家送上祝福,今天回到深圳,明天就要上班了,小伙伴们是不是和我一样呢?今天讲的是一个大家都见过的动画,雷达搜索好友嘛,原理也十分的简单,你看完我的 ...

  6. 外卖也智能!美团骑手智能助手的技术与实践

    点击关注 InfoQ,置顶公众号 接收程序员的 8 点技术早餐 作者 | 何仁清 编辑 | 臧秀涛 随着数字化时代的到来,外卖市场近年来发展非常迅猛.对外卖物流系统而言,配送效率和用户体验至关重要.而 ...

  7. Android 使用ViewPager2+ExoPlayer+VideoCache 实现仿抖音视频翻页播放

    1. 实现效果 效果图中,视频没有铺满 是因为使用了ExoPlayer的RESIZE_MODE_FIT模式, 虽然使用RESIZE_MODE_FILL模式可以填充整个父布局,但是本Demo中使用的视频 ...

  8. 程序员写代码崩溃,路过的暖心美团骑手:我帮你看看!

    有这样一群人,他们每日穿梭于人群,来也匆匆,去也匆匆!不是蓝色,就是黄色.他们的职责无比平凡,而褪去外衣之后,却又是深藏不漏的扫地僧! 近日,青岛一美团骑手又是???? 遍了开发者圈子... 据了解, ...

  9. 美团--美团骑手包裹区间分组

    美团–美团骑手包裹区间分组 文章目录 美团--美团骑手包裹区间分组 一.题目描述 二.分析 三.代码 一.题目描述 2110年美团外卖火星第3000号配送站点有26名骑手,分别以大写字母A-Z命名,因 ...

最新文章

  1. Android选项卡置底的方法
  2. ECHO.js 纯javascript轻量级延迟加载
  3. Docker创建Nexus
  4. column 'XXXX' in field list is ambiguous
  5. 00600 ora 关闭oracle_ORA-00600的解决方法?
  6. CSS:给 input 中 type=text 设置CSS样式
  7. 别翻了,成员变量和局部变量在多线程中的使用,看这篇就够了
  8. 121. 买卖股票的最佳时机 golang
  9. Java 最高均薪 19015 元! 8 月程序员工资出炉,你拖后腿了吗?
  10. 在 Windows 下部署 Go 语言环境
  11. vue-slicksort拖拽组件
  12. Traffic Server中的cache.config的字段理解
  13. python consul服务发现_consule服务注册和发现 安装 部署
  14. 查询SQL最近一次启动时间
  15. Hyperledger Fabric教程(8)--byfn.sh分析-script.sh
  16. 锁屏界面显示某些设置已隐藏_一般人都不知道,iPhone 隐藏的功能,让你的苹果手机变得贼好用...
  17. 190524每日一句
  18. 10分钟带你彻底搞懂企业服务总线
  19. choose标签使用
  20. Euraka服务注册篇

热门文章

  1. gemfire java_gemfire基本使用以及spring-data-gemfire的使用
  2. SQL语句中删除表数据drop、truncate和delete的用法
  3. 捣鼓篇之— 正点原子DS100mini示波器拆解
  4. Duplicate class com.amap.api.fence.DistrictItem found in modules location-6.2.0 and navi-3dmap-9.6.
  5. canvas擦除画的线但不擦除背景
  6. 开源MFC微信机器人助手
  7. 计算机五彩的窗子教案,幼儿园托班主题活动:从“彩色窗户”到“彩色眼镜”...
  8. oracle使用impdp导入方法,oracle expdp导出和impdp导入使用方法
  9. ubuntu18.10中搜狗拼音的安装
  10. 怎样修复老照片?三个方法教你修复照片怎么弄