自定义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);