package net.coding.program.mall; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import net.coding.program.MyApp; import net.coding.program.R; import net.coding.program.common.ImageLoadTool; import net.coding.program.common.util.SingleToast; import net.coding.program.model.MallItemObject; import net.coding.program.setting.ValidePhoneActivity_; import java.util.ArrayList; /** * Created by libo on 2015/11/26. */ public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.ViewHolder> { private ArrayList<MallItemObject> mDataList = new ArrayList<>(); private double userPoint; private ImageLoadTool imageLoader; private Context context; private int lastPosition = -1; public void addAll(ArrayList<MallItemObject> data) { this.mDataList.addAll(data); } public void addData(MallItemObject data) { this.mDataList.add(data); } public void removeAll() { mDataList.clear(); } public void setUserPoint(double userPoint) { this.userPoint = userPoint; } public MyRecyclerAdapter(ArrayList<MallItemObject> mData, double userPoint, ImageLoadTool imageLoader, Context context) { this.mDataList.addAll(mData); this.userPoint = userPoint; this.imageLoader = imageLoader; this.context = context; } public static class ViewHolder extends RecyclerView.ViewHolder { TextView name; TextView points_cost; ImageView image; ImageView exchange; LinearLayout container; public ViewHolder(View itemView) { super(itemView); name = (TextView) itemView.findViewById(R.id.mall_list_item_title); points_cost = (TextView) itemView.findViewById(R.id.mall_list_item_cost); image = (ImageView) itemView.findViewById(R.id.mall_list_item_img); exchange = (ImageView) itemView.findViewById(R.id.mall_list_item_exchange); container = (LinearLayout) itemView.findViewById(R.id.mall_list_item_container); } } @Override public int getItemCount() { return mDataList.size(); } @Override public void onBindViewHolder(ViewHolder holder, int position) { final MallItemObject object = mDataList.get(position); holder.name.setText(object.getName()); holder.points_cost.setText(object.getPoints_cost() + " 码币"); String imgUrl = object.getImage(); imageLoader.loadImageDefaultCoding(holder.image, imgUrl); double cost = object.getPoints_cost(); if (userPoint < cost) { holder.exchange .setImageDrawable(context.getResources().getDrawable(R.drawable.ic_unexchange)); } else { holder.exchange .setImageDrawable(context.getResources().getDrawable(R.drawable.ic_exchange)); } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (object.getPoints_cost() > userPoint) { Toast.makeText(context, "您的码币不足!", Toast.LENGTH_SHORT).show(); } else { if (!MyApp.sUserObject.phone.isEmpty()) { MallOrderSubmitActivity_.intent(context) .mallItemObject(object) .start(); } else { SingleToast.showMiddleToast(context, "验证手机号才能下单"); ValidePhoneActivity_.intent(context).start(); } } } }); setAnimation(holder.container, position); } @Override public void onViewDetachedFromWindow(ViewHolder holder) { super.onViewDetachedFromWindow(holder); holder.container.clearAnimation(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.mall_list_item, parent, false); ViewHolder holder = new ViewHolder(view); return holder; } private void setAnimation(View viewToAnimate, int position) { // If the bound view wasn't previously displayed on screen, it's animated if (position > lastPosition) { Animation animation = AnimationUtils .loadAnimation(context, R.anim.item_bottom_in); viewToAnimate.startAnimation(animation); lastPosition = position; } } }