安卓:自定义RecyclerView实现商城页面

自定义RecyclerView

实现 item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/ban3"
    android:layout_width="132dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/huowuimg"
        android:layout_width="match_parent"
        android:layout_height="63dp"
        fresco:placeholderImage="@drawable/banner" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="餐饮"
        android:id="@+id/huowutype"/>

    <TextView
        android:id="@+id/price"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="100" />
</LinearLayout>

###在引用的activity


            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>

###实现适配器

import android.annotation.SuppressLint;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.example.ebarter.DataManager;
import com.example.ebarter.R;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReOrder_item extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
    private Context that;
    private String type;
    String name = null, sta = null, deliver = "", refund = "", m_supplierOrderId = "";
    boolean  oporateButtonState= Boolean.parseBoolean(null);
    boolean payButtonState= Boolean.parseBoolean(null);
    boolean deButtonState= Boolean.parseBoolean(null);

    public ReOrder_item(Context context, String type) {
        this.that = context;
        this.type = type;
    }


    public void onClick(View v) {
        Toast toast = Toast.makeText(that, "点击成功!", Toast.LENGTH_LONG);
        toast.show();

    }


    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(parent.getContext(), R.layout.orderitem, null);
        RecyclerView.ViewHolder viewHolder = new RvViewholder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
        final RvViewholder myViewholder = (RvViewholder) holder;

        DataManager dataManager = DataManager.getInstance();

        JSONObject jsonObject;
        JSONArray jsonArray_order = null;
        String string = (String) dataManager.getInfoMap().get("order_items");
        try {
            jsonObject = new JSONObject(string);
            jsonArray_order = jsonObject.getJSONArray("liveOrders");

        } catch (JSONException e) {
            e.printStackTrace();
        }

        String price = null;


        try {
            m_supplierOrderId = jsonArray_order.getJSONObject(position).getJSONObject("paymentRequest").getString("m_supplierOrderId");
            price = jsonArray_order.getJSONObject(position).getJSONObject("paymentRequest").getString("amount");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        try {
            sta = jsonArray_order.getJSONObject(position).getJSONObject("paymentRequest").getString("result");

            name = jsonArray_order.getJSONObject(position).getJSONObject("paymentRequest").getString("m_title");
            deliver = jsonArray_order.getJSONObject(position).getJSONObject("paymentRequest").getString("deliverType");
            refund = jsonArray_order.getJSONObject(position).getJSONObject("paymentRequest").getString("refundType");
        } catch (JSONException e) {
            e.printStackTrace();
        }

        //String imageURL = list_shopcar.get(position).getPic();

        // username = list_shopcar.get(position).getShopname();

        //String orderid = list_shopcar.get(position).getOrderid();
        String img = "https://s3.cn-north-1.amazonaws.com.cn/linda-trades-archive-1/";
        myViewholder.itemIv.setImageURL(img + m_supplierOrderId.replace(":", "-") + ".jpg");
        myViewholder.itemname.setText(name);
        myViewholder.itemIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                imglisten.onItemClick(view, position);
            }
        });
        //支付按钮显示
        if(sta.equals("paid"))//按下
        {
            myViewholder.pay.setText("已支付");
            myViewholder.pay.setEnabled(false);

            myViewholder.de.setEnabled(true);
            myViewholder.oporate.setEnabled(true);

        }
        else{
            myViewholder.de.setEnabled(false);
            myViewholder.oporate.setEnabled(false);
        }


        //设置价格显示
        Pattern p = Pattern.compile("\\d+\\.*\\d*");
        Matcher m = p.matcher(price);
        m.find();
        price = m.group();

        // price=p.matcher()
        price=Double.toString((0.1)*(Double.valueOf(price).doubleValue()));
        myViewholder.price.setText("价格:  " + price + "元");
        myViewholder.statute.setText("支付结果:" + sta + "发货结果:" + deliver + "退款情况:" + refund);
        final String type = (String) dataManager.getInfoMap().get("usertype");
        if (type.equals("in")) {
            myViewholder.de.setText("确认收货");
            myViewholder.oporate.setText("申请退款");

        } else {
            myViewholder.de.setText("确认发货");
            myViewholder.oporate.setText("确认退款");
            myViewholder.pay.setEnabled(false);
        }

        if(type.equals("in")&& deliver.equals("Undeliver") && sta.equals("paid") && refund.equals("Unrefund"))//易入方,已支付,未收货,未申请退款
        {
            myViewholder.de.setEnabled(true);
            myViewholder.oporate.setEnabled(true);
        }
        else if(type.equals("in")&& deliver.equals("Undeliver") && sta.equals("paid") && refund.equals("refunding")){//易入方,已支付,未收货,已申请退款
            myViewholder.de.setEnabled(false);
            myViewholder.oporate.setEnabled(false);
            myViewholder.oporate.setText("已申请退款");
        }
        else if(type.equals("in")&& deliver.equals("diddeliver") && sta.equals("paid") && refund.equals("Unrefund"))//易入方,已支付,已收货,未申请退款
        {
            myViewholder.oporate.setEnabled(false);
            myViewholder.de.setEnabled(false);
            myViewholder.de.setText("已收货");
        }
        else if(type.equals("in")&& deliver.equals("diddeliver") && sta.equals("paid") && refund.equals("refunding"))//易入方,已支付,已收货,未申请退款
        {
            myViewholder.oporate.setEnabled(false);
            myViewholder.de.setEnabled(false);
            myViewholder.de.setText("已收货");
            myViewholder.oporate.setText("已申请退款");
        }
        else if(type.equals("out")&& deliver.equals("Undeliver") && refund.equals("Unrefund"))//易出方,未确认发货,未确认退款
        {
            myViewholder.de.setEnabled(true);
            myViewholder.oporate.setEnabled(true);
        }
        else if(type.equals("out")&& deliver.equals("diddeliver") && refund.equals("Unrefund"))//易出方,已确认发货,未确认退款
        {
            myViewholder.de.setEnabled(false);
            myViewholder.oporate.setEnabled(false);
            myViewholder.de.setText("已确认发货");
        }
        else if(type.equals("out")&& deliver.equals("Undeliver") && refund.equals("refunding"))//易出方,未确认发货,已确认退款
        {
            myViewholder.de.setEnabled(false);
            myViewholder.oporate.setEnabled(false);
            myViewholder.oporate.setText("已确认退款");
        }


        myViewholder.pay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                    PAY.onItemClick(view, position);
            }
        });

        myViewholder.oporate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                mOnItemClickLitener.onItemClick(view, position);

            }
        });
        myViewholder.de.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        del.onItemClick(view, position);
                    }
                }
        );
        // myViewholder.user.setText(username);

//        if (mOnItemClickLitener != null) {
//            holder.itemView.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    // int pos = realPostion;
//                    mOnItemClickLitener.onItemClick(holder.itemView, position);
//                }
//            });
//            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
//                @Override
//                public boolean onLongClick(View v) {
//                    // int pos = realPostion;
//                    return true;
//                }
//            });
//        }

    }

    @Override
    public int getItemCount() {
        JSONObject jsonObject = null;
        int length = 0;
        DataManager dataManager = DataManager.getInstance();
        String string = (String) dataManager.getInfoMap().get("order_items");
        Log.d("st",string);
        try {
            jsonObject = new JSONObject(string);
           // Log.d("jo",jsonObject.toString());
            length = jsonObject.getJSONArray("liveOrders").length();
            Log.d("tradelen",jsonObject.getJSONArray("liveOrders").toString());

        } catch (JSONException e) {
            e.printStackTrace();
            Log.d("jo",jsonObject.toString());
        }
        Log.d("tradelen", string);

        Log.d("tradelen", length + "");
        return length;

    }

    class RvViewholder extends RecyclerView.ViewHolder {

        public MyImageView itemIv;
        public TextView itemname, price, statute;

        public Button pay, oporate, de;

        /**
         * 初始化控件
         */
        public RvViewholder(View itemView) {
            super(itemView);
            oporate = (Button) itemView.findViewById(R.id.order_oporate);
            pay = (Button) itemView.findViewById(R.id.order_pay);
            itemIv = (MyImageView) itemView.findViewById(R.id.order_item_pic);
            itemname = (TextView) itemView.findViewById(R.id.order_item_name);
            statute = (TextView) itemView.findViewById(R.id.order_statue);
            price = (TextView) itemView.findViewById(R.id.order_item_price);
            de = (Button) itemView.findViewById(R.id.order_deliver);


/*
               View.OnTouchListener buttonListener=new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        int action=event.getAction();
                        if(action==MotionEvent.ACTION_DOWN)//按下
                        {
                            de.setEnabled(false);
                           refund="refunding";
                            statute.setText("支付结果:" + sta + "发货结果:" + deliver + "退款情况:" + refund);
                        }
                        else if(action==MotionEvent.ACTION_UP){}//松开
                        return false;
                    }
                };
                oporate.setOnTouchListener(buttonListener);

                View.OnTouchListener buttonListener1=new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        int action=event.getAction();
                        if(action==MotionEvent.ACTION_DOWN)//按下
                        {
                            oporate.setEnabled(false);

                        }
                        else if(action==MotionEvent.ACTION_UP){}//松开
                        return false;
                    }
                };
                de.setOnTouchListener(buttonListener1);

 */


/*
            View.OnTouchListener buttonListener2=new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    int action=event.getAction();
                    if(sta.equals("paid"))//按下
                    {
                        pay.setText("已支付");
                        sta="paid";
                        statute.setText("支付结果:" + sta + "发货结果:" + deliver + "退款情况:" + refund);
                        //pay.setEnabled(false);

                    }
                    else if(action==MotionEvent.ACTION_UP ){
                        oporate.setEnabled(true);
                        de.setEnabled(true);

                    }//松开
                    return false;
                }
            };
            pay.setOnTouchListener(buttonListener2);

 */








        }

    }


    public interface OnItemClickListener {
        void onItemClick(View v, int postion);

        void onItemLongClick(View v, int postion);
    }

    private OnItemClickListener mOnItemClickLitener;

    private OnItemClickListener PAY;
    private OnItemClickListener del;
    private OnItemClickListener imglisten;

    public void setImglisten(OnItemClickListener imglisten) {
        this.imglisten = imglisten;
    }

    public void setPAY(OnItemClickListener onItemClickListener) {
        this.PAY = onItemClickListener;
    }

    public void setDel(OnItemClickListener onItemClickListener) {
        this.del = onItemClickListener;

    }

    public void setmOnItemClickLitener(OnItemClickListener mOnItemClickLitener) {
        this.mOnItemClickLitener = mOnItemClickLitener;
    }
}

在对应的java文件

  //样式,boolean代表展示的方向
        GridLayoutManager layoutManager = new GridLayoutManager(this, 3 ,GridLayoutManager.VERTICAL,false);
        rv.setLayoutManager(layoutManager);
        Readapter readapter=new Readapter(this,"all");
        readapter.setmOnItemClickLitener(this);
        rv.setAdapter(readapter);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值