okHttp:
public class OkHttpUtils {
private static volatile OkHttpUtils instance;
private OkHttpClient client;
private Handler handler = new Handler();
private OkHttpUtils() {
client = new OkHttpClient.Builder()
.addInterceptor(new MyInterceptor())
.build();
}
public static OkHttpUtils getInstance() {
if (null == instance) {
synchronized (OkHttpUtils.class) {
if (instance == null) {
instance = new OkHttpUtils();
}
}
}
return instance;
}
public void post(String url, Map<String, Object> map, final CallBack callBack, final Class cls) {
FormBody.Builder builder = new FormBody.Builder();
if (map != null && !map.isEmpty()) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
builder.add(entry.getKey(), (String) entry.getValue());
}
}
Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
callBack.onFailed(e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string();
final Object o = GsonUtils.getInstance().fromJson(result, cls);
handler.post(new Runnable() {
@Override
public void run() {
callBack.onSuccess(o);
}
});
}
});
}
}
p层:
public class OrderPresenter {
private IView iv;
public void attachView(IView iv) {
this.iv = iv;
}
public void getOrders(String id) {
String url = "https://www.zhaoapi.cn/product/getOrders";
Map<String, Object> map = new HashMap<>();
map.put("uid", id);
OkHttpUtils.getInstance().post(url, map, new CallBack() {
@Override
public void onSuccess(Object o) {
MessageBean bean = (MessageBean) o;
List<Order> data = bean.getData();
if (null != data) {
iv.success(data);
}
}
@Override
public void onFailed(Exception e) {
iv.failed(e);
}
}, MessageBean.class);
}
public void detachView() {
if (null != iv) {
iv = null;
}
}
getUtils:
public class GsonUtils {
private static Gson instance;
private GsonUtils() {
}
public static Gson getInstance() {
if (instance == null) {
instance = new Gson();
}
return instance;
}
}
拦截器:
public class MyInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request newRequest = chain.request().newBuilder()
.addHeader("source", "android")
.url(request.url())
.build();
return chain.proceed(newRequest);
}
}
MainActivity:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.bwie.myorderdemo.R;
import com.bwie.myorderdemo.adapter.OrderAdapter;
import com.bwie.myorderdemo.callback.IView;
import com.bwie.myorderdemo.entity.Order;
import com.bwie.myorderdemo.presenter.OrderPresenter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements IView {
private RecyclerView rvOrder;
private OrderAdapter adapter;
private List<Order> list;
private OrderPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rvOrder = (RecyclerView) findViewById(R.id.rv_order);
LinearLayoutManager manager = new LinearLayoutManager(this);
rvOrder.setLayoutManager(manager);
list = new ArrayList<>();
adapter = new OrderAdapter(this, list);
rvOrder.setAdapter(adapter);
presenter = new OrderPresenter();
presenter.attachView(this);
presenter.getOrders("71");
}
@Override
public void success(List<Order> orders) {
list.clear();
list.addAll(orders);
adapter.notifyDataSetChanged();
}
@Override
public void failed(Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (presenter != null) {
presenter.detachView();
}
}
}
适配器:
public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder> {
private Context context;
private List<Order> list;
public OrderAdapter(Context context, List<Order> list) {
this.context = context;
this.list = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = View.inflate(context, R.layout.item_order, null);
ViewHolder holder = new ViewHolder(v);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
int status = list.get(position).getStatus();
switch (status) {
case 0:
holder.txtStatus.setText("已取消");
break;
case 1:
holder.txtStatus.setText("待支付");
break;
case 2:
holder.txtStatus.setText("已支付");
break;
}
holder.txtTitle.setText(list.get(position).getTitle());
holder.txtPrice.setText(list.get(position).getPrice() + "");
holder.txtTime.setText(list.get(position).getCreatetime());
}
@Override
public int getItemCount() {
if (list == null) {
return 0;
}
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private TextView txtStatus;
private TextView txtTitle;
private TextView txtPrice;
private TextView txtTime;
private Button btnSee;
public ViewHolder(View itemView) {
super(itemView);
txtStatus = (TextView) itemView.findViewById(R.id.txt_order_status);
txtTitle = (TextView) itemView.findViewById(R.id.txt_order_title);
txtPrice = (TextView) itemView.findViewById(R.id.txt_order_price);
txtTime = (TextView) itemView.findViewById(R.id.txt_order_time);
btnSee = (Button) itemView.findViewById(R.id.btn_see_order);
}
}
}