公司有个项目需要做购物车功能,于是实现了一下,另加了个浮动title ,侧滑删除,示例图片如下

//侧滑删除
compile 'com.github.anzaizai:EasySwipeMenuLayout:1.1.2'

实现方式   adapter用的是封装的

CommonAdapter

代码如下

package com.loocan.shpping.viewholder;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;import java.util.List;/*** adapter基类** @param <T>*/
public abstract class CommonAdapter<T> extends BaseAdapter {protected Context mContext;protected List<T> mDatas;protected LayoutInflater mInflater;private int layoutId;private int displayCount;public CommonAdapter(Context context, List<T> datas) {this.mContext = context;this.mDatas = datas;mInflater = LayoutInflater.from(context);}public CommonAdapter(Context context, List<T> datas, int layoutId) {this.mContext = context;this.mDatas = datas;this.layoutId = layoutId;mInflater = LayoutInflater.from(context);}@Overridepublic int getCount() {if (displayCount != 0) {return this.displayCount;}return mDatas.size();}public void setDisplayCount(int displayCount) {this.displayCount = displayCount;}@Overridepublic T getItem(int position) {return mDatas.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = ViewHolder.get(mContext, convertView, parent,layoutId, position);convert(holder, getItem(position));return holder.getConvertView();}public List<T> getDatas() {return mDatas;}public void setDatas(List<T> datas) {mDatas = datas;}public abstract void convert(ViewHolder holder, T t);}
package com.loocan.shpping.viewholder;import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.util.Linkify;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.widget.Checkable;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.TextView;/*** 以前的做法是这样子的* viewHolder = new ViewHolder();* convertView = layoutInflater.inflate(R.layout.people_list_item, null, false);* viewHolder.checkBox = (CheckBox)convertView.findViewById(R.id.checkBox);* viewHolder.name = (TextView)convertView.findViewById(R.id.name);* 缺点,如果我们换了一个Item,我们就需要在ViewHolder中从新添加对应空间的变量* 也就需要重写viewHolder,* 因此这里用了一个通用的方法,就是在viewHolder中用一个类似于map的键值来保存findViewById对象,* 这种比先前还有一个好处就是,不管多少条Item,Item中的每个控件只会被findViewById一次* 以前的方法,当前页面缓存的个数4个,然后内存中对每个控件都是对应4个,也就是findViewById4次,如果屏幕较大就会越来越多* 以后一个项目几十个Adapter一个ViewHolder直接hold住全场** @ Author: qiyue (ustory)* @ Email: qiyuekoon@foxmail.com* @ Data:2016/3/6*/
public class ViewHolder {private SparseArray<View> mViews;private int mPosition;private View mConvertView;private Context mContext;private int mLayoutId;public ViewHolder(Context context, ViewGroup parent, int layoutId,int position) {mContext = context;mLayoutId = layoutId;this.mPosition = position;this.mViews = new SparseArray<View>();mConvertView = LayoutInflater.from(context).inflate(layoutId, parent,false);mConvertView.setTag(this);}public static ViewHolder get(Context context, View convertView,ViewGroup parent, int layoutId, int position) {if (convertView == null) {return new ViewHolder(context, parent, layoutId, position);} else {ViewHolder holder = (ViewHolder) convertView.getTag();holder.mPosition = position;return holder;}}public int getPosition() {return mPosition;}public int getLayoutId() {return mLayoutId;}/*** 通过viewId获取控件** @param viewId* @return*/public <T extends View> T getView(int viewId) {View view = mViews.get(viewId);if (view == null) {view = mConvertView.findViewById(viewId);mViews.put(viewId, view);}return (T) view;}public View getConvertView() {return mConvertView;}/*** 设置TextView的�??** @param viewId* @param text* @return*/public ViewHolder setText(int viewId, String text) {TextView tv = getView(viewId);tv.setText(text);return this;}public ViewHolder setImageResource(int viewId, int resId) {ImageView view = getView(viewId);view.setImageResource(resId);return this;}public ViewHolder setImageBitmap(int viewId, Bitmap bitmap) {ImageView view = getView(viewId);view.setImageBitmap(bitmap);return this;}public ViewHolder setImageDrawable(int viewId, Drawable drawable) {ImageView view = getView(viewId);view.setImageDrawable(drawable);return this;}public ViewHolder setBackgroundColor(int viewId, int color) {View view = getView(viewId);view.setBackgroundColor(color);return this;}public ViewHolder setBackgroundRes(int viewId, int backgroundRes) {View view = getView(viewId);view.setBackgroundResource(backgroundRes);return this;}public ViewHolder setTextColor(int viewId, int textColor) {TextView view = getView(viewId);view.setTextColor(textColor);return this;}public ViewHolder setTextColorRes(int viewId, int textColorRes) {TextView view = getView(viewId);view.setTextColor(mContext.getResources().getColor(textColorRes));return this;}@SuppressLint("NewApi")public ViewHolder setAlpha(int viewId, float value) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {getView(viewId).setAlpha(value);} else {// Pre-honeycomb hack to set Alpha valueAlphaAnimation alpha = new AlphaAnimation(value, value);alpha.setDuration(0);alpha.setFillAfter(true);getView(viewId).startAnimation(alpha);}return this;}public ViewHolder setVisible(int viewId, boolean visible) {View view = getView(viewId);view.setVisibility(visible ? View.VISIBLE : View.GONE);return this;}public ViewHolder linkify(int viewId) {TextView view = getView(viewId);Linkify.addLinks(view, Linkify.ALL);return this;}public ViewHolder setTypeface(Typeface typeface, int... viewIds) {for (int viewId : viewIds) {TextView view = getView(viewId);view.setTypeface(typeface);view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);}return this;}public ViewHolder setProgress(int viewId, int progress) {ProgressBar view = getView(viewId);view.setProgress(progress);return this;}public ViewHolder setProgress(int viewId, int progress, int max) {ProgressBar view = getView(viewId);view.setMax(max);view.setProgress(progress);return this;}public ViewHolder setMax(int viewId, int max) {ProgressBar view = getView(viewId);view.setMax(max);return this;}public ViewHolder setRating(int viewId, float rating) {RatingBar view = getView(viewId);view.setRating(rating);return this;}public ViewHolder setRating(int viewId, float rating, int max) {RatingBar view = getView(viewId);view.setMax(max);view.setRating(rating);return this;}public ViewHolder setTag(int viewId, Object tag) {View view = getView(viewId);view.setTag(tag);return this;}public ViewHolder setTag(int viewId, int key, Object tag) {View view = getView(viewId);view.setTag(key, tag);return this;}public ViewHolder setChecked(int viewId, boolean checked) {Checkable view = (Checkable) getView(viewId);view.setChecked(checked);return this;}/*** 关于事件*/public ViewHolder setOnClickListener(int viewId,View.OnClickListener listener) {View view = getView(viewId);view.setOnClickListener(listener);return this;}public ViewHolder setOnTouchListener(int viewId,View.OnTouchListener listener) {View view = getView(viewId);view.setOnTouchListener(listener);return this;}public ViewHolder setOnLongClickListener(int viewId,View.OnLongClickListener listener) {View view = getView(viewId);view.setOnLongClickListener(listener);return this;}}

Activity  代码如下

package com.loocan.shpping;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;public class MainActivity extends AppCompatActivity implements CartAdapter.ItemClickListener {@BindView(R.id.tv_back)TextView mTvBack;@BindView(R.id.tv_title)TextView mTvTitle;@BindView(R.id.tv_right)TextView mTvRight;@BindView(R.id.rlt_base)RelativeLayout mRltBase;@BindView(R.id.listView)ListView mListView;@BindView(R.id.all_chekbox)CheckBox mAllChekbox;@BindView(R.id.tv_total_price)TextView mTvTotalPrice;@BindView(R.id.tv_go_to_pay)TextView mTvGoToPay;private double totalPrice = 0.00;private int totalCount = 0;private List<HashMap<String, String>> goodsList;private CartAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);mTvTitle.setText("购物车");//模拟一些数据initDate();initView();}private void initDate() {goodsList = new ArrayList<>();for (int i = 0; i < 10; i++) {HashMap<String, String> map = new HashMap<>();map.put("id", "0");map.put("name", "购物车里的第" + (i + 1) + "件商品");map.put("type", (i + 20) + "码");map.put("price", (new Random().nextInt(100) % (100 - 29 + 29) + 29) + "");map.put("count", (new Random().nextInt(10) % (10 - 1 + 1) + 1) + "");goodsList.add(map);}}private void initView() {adapter = new CartAdapter(this, goodsList, R.layout.item_cehua);adapter.setOnItemClickListener(this);mListView.setAdapter(adapter);adapter.notifyDataSetChanged();}@OnClick({R.id.all_chekbox, R.id.tv_go_to_pay})public void onViewClicked(View view) {switch (view.getId()) {case R.id.all_chekbox:AllTheSelected(true);break;case R.id.tv_go_to_pay:if (totalCount <= 0) {Toast.makeText(this, "请选择要付款的商品~", Toast.LENGTH_SHORT).show();return;}Toast.makeText(this, "钱就是另一回事了~", Toast.LENGTH_SHORT).show();break;}}@Overridepublic void ItemClickListener(View view, int position) {HashMap<String, String> hashMap = goodsList.get(position);if (((CheckBox) view).isChecked()) {hashMap.put("id", "1");} else {hashMap.put("id", "0");}goodsList.set(position, hashMap);AllTheSelected(false);}//删除@Overridepublic void ItemDeleteClickListener(View view, int position) {goodsList.remove(position);AllTheSelected(false);}//增加@Overridepublic void ItemAddClickListener(View view, int position) {//当低于目标值是  可以做删除操作HashMap<String, String> hashMap = goodsList.get(position);int currentCount = Integer.valueOf(hashMap.get("count"));if (currentCount + 1 > 15) {Toast.makeText(this, "亲,已达库存上限~", Toast.LENGTH_SHORT).show();} else {hashMap.put("count", String.valueOf(currentCount + 1));goodsList.set(position, hashMap);}AllTheSelected(false);}//减@Overridepublic void ItemReduceClickListener(View view, int position) {HashMap<String, String> hashMap = goodsList.get(position);int currentCount = Integer.valueOf(hashMap.get("count"));if (currentCount - 1 < 1) {Toast.makeText(this, "受不了了,宝贝不能再减少了哦~", Toast.LENGTH_SHORT).show();} else {hashMap.put("count", String.valueOf(currentCount - 1));goodsList.set(position, hashMap);}AllTheSelected(false);}//控制价格展示private void priceContro() {totalCount = 0;totalPrice = 0.00;for (int i = 0; i < goodsList.size(); i++) {if (goodsList.get(i).get("id").equals("1")) {totalCount = totalCount + Integer.valueOf(goodsList.get(i).get("count"));double goodsPrice = Integer.valueOf(goodsList.get(i).get("count")) * Double.valueOf(goodsList.get(i).get("price"));totalPrice = totalPrice + goodsPrice;}}mTvTotalPrice.setText("¥ " + totalPrice);mTvGoToPay.setText("付款(" + totalCount + ")");}/*** 部分选取 做全选  全部选择做反选*/private void AllTheSelected(Boolean aBoolean) {int number = 0;for (int j = 0; j < goodsList.size(); j++) {if (goodsList.get(j).get("id").equals("1")) {number++;}}if (aBoolean) {//全部选择  反选if (number == goodsList.size()) {for (int i = 0; i < goodsList.size(); i++) {goodsList.get(i).put("id", "0");}mAllChekbox.setChecked(false);//全部未选} else if (number == 0) {for (int i = 0; i < goodsList.size(); i++) {goodsList.get(i).put("id", "1");}mAllChekbox.setChecked(true);//部分选择} else {for (int i = 0; i < goodsList.size(); i++) {goodsList.get(i).put("id", "1");}mAllChekbox.setChecked(true);}} else {if (number == goodsList.size()) {mAllChekbox.setChecked(true);} else {mAllChekbox.setChecked(false);}}adapter.notifyDataSetChanged();priceContro();}
}

adapter如下

package com.loocan.shpping;import android.content.Context;
import android.view.View;import com.guanaj.easyswipemenulibrary.EasySwipeMenuLayout;
import com.loocan.shpping.viewholder.CommonAdapter;
import com.loocan.shpping.viewholder.ViewHolder;import java.util.HashMap;
import java.util.List;/*** File descripition:** @author lp* @date 2018/9/28*/public class CartAdapter extends CommonAdapter<HashMap<String, String>> {private ItemClickListener listener;public CartAdapter(Context context, List<HashMap<String, String>> datas, int layoutId) {super(context, datas, layoutId);}@Overridepublic void convert(final ViewHolder holder, HashMap<String, String> map) {if (map.get("id").equals("0")) {holder.setChecked(R.id.check_box, false);} else {holder.setChecked(R.id.check_box, true);}holder.setText(R.id.tv_goods_name, map.get("name"));holder.setText(R.id.tv_num, map.get("count"));holder.setText(R.id.tv_type_size, map.get("type"));holder.setText(R.id.tv_goods_price, "¥ " + (Double.valueOf(map.get("price")) * Integer.valueOf(map.get("count"))));final EasySwipeMenuLayout easySwipeMenuLayout = holder.getView(R.id.action_bar);holder.setOnClickListener(R.id.check_box, new View.OnClickListener() {@Overridepublic void onClick(View v) {listener.ItemClickListener(v, holder.getPosition());}});//删除holder.setOnClickListener(R.id.right, new View.OnClickListener() {@Overridepublic void onClick(View v) {//侧滑初始化easySwipeMenuLayout.resetStatus();listener.ItemDeleteClickListener(v, holder.getPosition());}});//减holder.setOnClickListener(R.id.tv_reduce, new View.OnClickListener() {@Overridepublic void onClick(View v) {listener.ItemReduceClickListener(v, holder.getPosition());}});//加holder.setOnClickListener(R.id.tv_add, new View.OnClickListener() {@Overridepublic void onClick(View v) {listener.ItemAddClickListener(v, holder.getPosition());}});}public void setOnItemClickListener(ItemClickListener listener) {this.listener = listener;}public interface ItemClickListener {void ItemClickListener(View view, int position);void ItemDeleteClickListener(View view, int position);void ItemAddClickListener(View view, int position);void ItemReduceClickListener(View view, int position);}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.loocan.shpping.MainActivity"><include layout="@layout/app_title" /><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:orientation="horizontal"><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="2.5"android:gravity="center_vertical"android:orientation="horizontal"><CheckBoxandroid:id="@+id/all_chekbox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="10dp"android:layout_marginRight="4dp"android:button="@drawable/check_box_bg"android:checkMark="?android:attr/listChoiceIndicatorMultiple"android:gravity="center"android:minHeight="64dp"android:paddingLeft="10dp"android:textAppearance="?android:attr/textAppearanceLarge"android:visibility="visible" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:text="合计:"android:textSize="16sp"android:textStyle="bold" /><TextViewandroid:id="@+id/tv_total_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="¥0.00"android:textColor="@color/colorBlack"android:textSize="16sp"android:textStyle="bold" /></LinearLayout><TextViewandroid:id="@+id/tv_go_to_pay"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="#E24146"android:clickable="true"android:gravity="center"android:text="付款(0)"android:textColor="#FAFAFA" /></LinearLayout>
</LinearLayout>

item_cehua.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content"><com.guanaj.easyswipemenulibrary.EasySwipeMenuLayoutandroid:id="@+id/action_bar"android:layout_width="match_parent"android:layout_height="wrap_content"app:contentView="@+id/content"app:rightMenuView="@+id/right"><LinearLayoutandroid:id="@+id/left"android:layout_width="100dp"android:layout_height="wrap_content"android:background="@android:color/holo_blue_dark"android:orientation="horizontal"android:padding="20dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="分享" /></LinearLayout><LinearLayoutandroid:id="@+id/content"android:layout_width="wrap_content"android:layout_height="114dp"android:background="#cccccc"android:orientation="vertical"><include layout="@layout/item_shopcart_product" /></LinearLayout><RelativeLayoutandroid:id="@+id/right"android:layout_width="60dp"android:layout_height="114dp"android:background="@android:color/holo_red_light"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="删除"android:textColor="@color/colorBlack" /></RelativeLayout></com.guanaj.easyswipemenulibrary.EasySwipeMenuLayout></RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#CCCCCC" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/colorF5F5F5"android:orientation="horizontal"><CheckBoxandroid:id="@+id/check_box"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="10dp"android:layout_marginRight="4dp"android:button="@drawable/check_box_bg"android:checkMark="?android:attr/listChoiceIndicatorMultiple"android:gravity="center"android:minHeight="64dp"android:minWidth="32dp"android:textAppearance="?android:attr/textAppearanceLarge"android:visibility="visible" /><ImageViewandroid:id="@+id/iv_adapter_list_pic"android:layout_width="85dp"android:layout_height="85dp"android:layout_marginBottom="15dp"android:layout_marginTop="13dp"android:scaleType="centerCrop"android:src="@mipmap/ic_launcher" /><RelativeLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="center_vertical"android:layout_marginLeft="13dp"android:layout_marginTop="10dp"><TextViewandroid:id="@+id/tv_goods_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginRight="10dp"android:layout_marginTop="20dp"android:ellipsize="end"android:maxLines="2"android:textColor="@color/colorBlack"android:textSize="14sp" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="30dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_goods_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:singleLine="true"android:textColor="@color/colorBlack"android:textSize="14sp"android:textStyle="bold" /><TextViewandroid:id="@+id/tv_type_size"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="10dp"android:layout_toRightOf="@+id/tv_goods_price"android:singleLine="true"android:textColor="@color/colorBlack"android:textSize="10sp" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="15dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_reduce"android:layout_width="25dp"android:layout_height="25dp"android:background="@drawable/text_angle_gray"android:gravity="center"android:text="一"android:textColor="@color/colorBlack"android:textSize="12sp" /><TextViewandroid:id="@+id/tv_num"android:layout_width="25dp"android:layout_height="25dp"android:background="@drawable/text_angle"android:gravity="center"android:singleLine="true"android:text="1"android:textColor="@color/colorBlack"android:textSize="12sp" /><TextViewandroid:id="@+id/tv_add"android:layout_width="25dp"android:layout_height="25dp"android:background="@drawable/text_angle_right"android:gravity="center"android:text="+"android:textColor="@color/colorBlack"android:textSize="12sp" /></LinearLayout></RelativeLayout></RelativeLayout></LinearLayout></LinearLayout>

demo链接地址:https://download.csdn.net/download/loocanp/10693697

Android商城购物车页面实现相关推荐

  1. Django 商城购物车页面

    购物车中间页 def carJump(request, goods_id): ## 1.先获取前端页面上提交过来的数据user_id = request.COOKIES.get('user_id')# ...

  2. Android商城开发----点击加入购物车,购物车商品的增删减

    Android商城开发----点击加入购物车,购物车商品的增删减 上一章节:[分类页面]点击左侧类别,实现右侧对应类别商品的展示 本文是在上一章节基础上开发的,点击[分类]页面商品的加入购物车按钮,实 ...

  3. 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果...

    基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...

  4. Android 仿京东商城购物车及源码

    产品需求和京东商城购物车类似,需求如下:店铺不能跨店结算,仅支持单店结算,单店铺下商品侧滑删除商品,如果单店铺下商品全部删除,需要删除该店铺,店铺的单个商铺库存不足或者商品下架状态不支持选择,商品的数 ...

  5. Android - 购物车页面【仿】淘宝App

    首先是效果图 xml布局文件 activity_shopping.xml <RelativeLayout xmlns:android="http://schemas.android.c ...

  6. Mvp快速搭建商城购物车模块

    代码地址如下: http://www.demodashi.com/demo/12834.html 前言: 说到MVP的时候其实大家都不陌生,但是涉及到实际项目中使用,还是有些无从下手.因此这里小编带着 ...

  7. jQuery实现PC端商城购物车模块基本功能(每个商品的小计和合计都会根据添加和删除的操作来动态计算)

    jQuery实现PC端商城购物车模块基本功能 先上效果图: 因为主要是想练习jQuery的使用,所以页面CSS部分比较简陋,有需要的话,大家在参考代码时,可以自己再完善下CSS部分的代码,让购物车页面 ...

  8. android studio购物车开发,2018-03-21 - 购物车项目说明 - 界面功能实现相关

    主界面 内容展示区域 功能:应用程序在该区域内显示与用户所选的底端页签相对应的内容. 实现:Android原生代码实现webview,并根据选中的页签,在webview内显示对应的html文件. 底端 ...

  9. Android商城开发--实现商城底部导航栏

    让我们先看效果图: 图一是默认效果图,图二是点击首页的效果图(图标和字体颜色会变化)            接下来是实现方法 1.先写布局. 我新建了一个ShoppingActivity,在activ ...

最新文章

  1. 算法---------数组-----------两数相加
  2. SLAM-ch2-使用kdevelop创建helloWorld程序
  3. 量子计算101:浅谈其需求、前景和现实
  4. php表单提取,php – 使用RegEx提取表单字段
  5. FD.io VPP配置文件详解
  6. cygwin不支持__malloc_hook
  7. Oracle备份数据库
  8. Java常用开发工具推荐
  9. uva10246最短路 + 枚举 + 数组记忆
  10. 2012年中国县级市面积排行(截止到2012年7月31日) (zz.IS2120@BG57IV3)
  11. 2020进博会霍尼韦尔特性材料和技术集团与七家企业签约项目
  12. 万字综述自动驾驶数据闭环
  13. java newline_Java 输出文件通过 BufferedWriter.newline() 方法换行
  14. Whole Word Masking (wwm) BERT PaddlePaddle常用预训练模型加载
  15. 基于C#实现的小型动物识别推理系统
  16. 查看及更改计算机名或域,如何查看和修改计算机名、域和工作组
  17. FreeBbs论坛社区APP源码
  18. graphql 有必要吗_为graphql准备好移动开发了吗
  19. 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展
  20. Linux解决出现错误时蜂鸣器滴滴响的问题

热门文章

  1. ECG分析:基于深度学习的ECG心律失常分类入门(5)
  2. 印象笔记mac版 同步问题_印象笔记同步失败怎么办?Mac电脑版
  3. studio二级列表查询
  4. 计算机无法快速预览pdf,常见电脑问题解决大全.pdf
  5. Redhat6.5配置RHCS--ISCSI/SCSI实现磁盘文件共享
  6. 画混淆矩阵,并根据矩阵计算准确率、每个类别的精确率和召回率
  7. Linux服务器使用php发送邮件,sendmail配置
  8. 在树莓派上实现usb摄像头监控的几种方案
  9. fiddler工具功能
  10. Postgresql 修改数据库默认当前 schema