两个ListView实现的Android点餐页面

该博客详细介绍了如何使用ListView组件在Android平台上构建一个包含热门推荐和购物车功能的点餐页面。

ListView实现的点餐页面(含热门推荐、购物车)

这是我的第一篇博文,主要是用来记录自己的学习过程,同时方便和大家互相学习。第一次写,写的不好,大家还请多包涵。
首先来看看这个页面的效果图:


该页面主体部分是两个listView,分别对应商品的分类列表和商品的详情列表。下面我们看看商品分类对应的适配器GoodsClassifyAdapter 和 GoodsDetailsAdapter的具体代码。

GoodsClassifyAdapter :

package com.example.henry.test.adapter;

import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.henry.test.R;
import com.example.henry.test.entity.GoodsClassify;

import java.util.ArrayList;
import java.util.List;

/**
 * Description:商品分类的适配器
 * author: henry
 * Date: 16-4-20 下午1:47.
 */
public class GoodsClassifyAdapter extends BaseAdapter {
    private Context context;
    private List<GoodsClassify> classifies = new ArrayList<>();
    private int selectedPostion = 0;    //选择的位置

    public GoodsClassifyAdapter(Context context,List<GoodsClassify> classifies){
        this.context = context;
        this.classifies = classifies;
    }
    @Override
    public int getCount() {
        return classifies.size();
    }

    @Override
    public Object getItem(int position) {
        return classifies.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    /**
     * 自定义方法,改变position
     * @param position
     */
    public void clearSelection(int position) {
        selectedPostion = position;
        this.notifyDataSetChanged();
    }

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

        final ViewHolder holder ;
        if (convertView == null){
            convertView = View.inflate(context, R.layout.listitem_parentgoods,null);
            holder = new ViewHolder();
            holder.mName = (TextView) convertView.findViewById(R.id.tv_name);
            holder.mNum = (TextView) convertView.findViewById(R.id.tv_count);
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.mName.setText(classifies.get(position).getTypeName());
        setNum(position,holder.mNum);

        //设置选中位置的字体和背景颜色
        if (selectedPostion == position){
            convertView.setBackgroundColor(Color.WHITE);
            holder.mName.setTextColor(Color.GREEN);
        }else{
            convertView.setBackgroundColor(Color.LTGRAY);
            holder.mName.setTextColor(Color.GRAY);
        }

        return convertView;
    }



    /**
     * 设置商品数量的显示或隐藏
     * @param position
     * @param textView
     */
    public void setNum(int position,TextView textView){
        int num = 0;
        for (int i = 0;i < classifies.get(position).getProdList().size();i++){
            num += classifies.get(position).getProdList().get(i).getProdCount();
        }
        classifies.get(position).setCount(num);

        if (num == 0){
            textView.setVisibility(View.GONE);
        }else{
            textView.setVisibility(View.VISIBLE);
            textView.getPaint().setAntiAlias(true);
            textView.setText(num + "");

        }
        //设置商品第一列,即热门推荐数量隐藏
        if (position == 0){
            textView.setVisibility(View.GONE);
        }
    }

    class ViewHolder{
        private TextView mName;
        private TextView mNum;
    }
}

GoodsDetailsAdapter:
</pre><pre name="code" class="java">package com.example.henry.test.adapter;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.henry.test.entity.GoodsDetails;
import com.example.henry.test.MainActivity;
import com.example.henry.test.app.MyApplication;
import com.example.henry.tes
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值