MyDD.java 和 activity_my_dd.xml
采用RelativeLayout布局
其中
Constans.DD="https://www.zhaoapi.cn/product/getOrders"
<android.support.design.widget.TabLayout
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:id="@+id/mdd_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_above="@id/mydd_return"
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/mdd_tab"/>
<Button
android:id="@+id/mydd_return"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/red"
android:text="返回"
android:textColor="#FFFFFF" />
public class MyDD extends AppCompatActivity implements IMyDD,TabFrag.TabAgain,TabFrag.PageAdd {
private IParesenter iParesenter;
private int page = 1;
private Button mydd_return;
private String uid;
private String[] tabs = {"待支付","已支付","已取消"};
private TabLayout mdd_tab;
private FragmentManager manager;
private List<Fragment> fragments;
private ViewPager vp;
private TabFrag fragmentForVp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
getSupportActionBar().hide();
setContentView(R.layout.activity_my_dd);
manager = getSupportFragmentManager();
mydd_return = findViewById(R.id.mydd_return);
mdd_tab = findViewById(R.id.mdd_tab);
vp = findViewById(R.id.vp);
fragments = new ArrayList<Fragment>();
iParesenter = new IMyDDParesenter(this);
SharedPreferences log = getSharedPreferences("LOG", Activity.MODE_PRIVATE);
uid = log.getString("uid", "");
if (uid.equals("")){
Toast.makeText(this, "您还没有登录,先去登录吧", Toast.LENGTH_SHORT).show();
}else{
iParesenter.getJson(Constans.DD + "?uid=" + uid + "&page=" + page);
}
mydd_return.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MyDD.this,JD.class);
startActivity(intent);
finish();
}
});
}
@Override
public void getMyDDSuccess(MyddInfo myddInfo) {
fragments = null;
fragments = new ArrayList<Fragment>();
mdd_tab.removeAllTabs();
MyVpAdapter myVpAdapter = new MyVpAdapter(manager);
vp.setAdapter(myVpAdapter);
if (myddInfo.getData().size() == 0 && (page == 1)){
Toast.makeText(this, "您先还还没有订单,先去购物车创建订单吧", Toast.LENGTH_SHORT).show();
return;
}else if (myddInfo.getData().size() == 0 && (page != 1)){
Toast.makeText(this, "已经到最后一页了,没有更多订单了", Toast.LENGTH_SHORT).show();
page = 1;
iParesenter.destroy();
iParesenter = new IMyDDParesenter(this);
iParesenter.getJson(Constans.DD + "?uid=" + uid + "&page=" + page);
return;
}
//给tablayout设置tab页
for(int i = 0;i < tabs.length;i ++){
fragmentForVp = new TabFrag();
fragmentForVp.setMyddInfo(myddInfo);
Bundle b = new Bundle();
b.putString("data",tabs[i]);
fragmentForVp.setTabAgain(this);
fragmentForVp.setArguments(b);
fragmentForVp.setPageAdd(this);
fragments.add(fragmentForVp);
mdd_tab.addTab(mdd_tab.newTab().setText(tabs[i]));
}
myVpAdapter.notifyDataSetChanged();
mdd_tab.setupWithViewPager(vp);
}
@Override
public void getMyDDFailed(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
iParesenter.destroy();
}
@Override
public void getTabAgain() {
iParesenter.destroy();
iParesenter = new IMyDDParesenter(this);
iParesenter.getJson(Constans.DD + "?uid=" + uid + "&page=" + page);
}
@Override
public void pageAdd() {
page ++;
iParesenter.destroy();
iParesenter = new IMyDDParesenter(this);
iParesenter.getJson(Constans.DD + "?uid=" + uid + "&page=" + page);
}
@Override
public void pageDel() {
Toast.makeText(this, "page:" + page, Toast.LENGTH_SHORT).show();
page = 1;
iParesenter.destroy();
iParesenter = new IMyDDParesenter(this);
iParesenter.getJson(Constans.DD + "?uid=" + uid + "&page=" + page);
}
class MyVpAdapter extends FragmentStatePagerAdapter {
public MyVpAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
}
MyddInfo.java(Bean)
public class MyddInfo {
private String msg;
private String code;
private String page;
private List<DataBean> data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* createtime : 2017-10-19T20:28:43
* orderid : 20
* price : 100.0
* status : 2
* title : 订单标题测试3
* uid : 71
*/
private String createtime;
private int orderid;
private double price;
private int status;
private String title;
private int uid;
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public int getOrderid() {
return orderid;
}
public void setOrderid(int orderid) {
this.orderid = orderid;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
}
}
mdd_recycle.xml
LinearLayout布局
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swip">
<android.support.v7.widget.RecyclerView
android:id="@+id/myDD_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp">
</android.support.v7.widget.RecyclerView>
</android.support.v4.widget.SwipeRefreshLayout>
接口 IUpStatus
public interface IUpStatus {
void upSuccess(String result);
void upFailed(String msg);
}
public interface IParesenter {
void getJson(String path);
void getJsonSuccess(String result);
void getJsonFailed(String msg);
void destroy();
}
UpUser
public class UpUser {
/**
* msg : 昵称修改成功
* code : 0
*/
private String msg;
private String code;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
public interface IMoudle {
void getJson(String path, IParesenter iParesenter);
}
OkUntil
public class OkUntil {
private static OkUntil okUntil = null;
private Handler handler = new Handler();
private OkUntil() {
}
/**
* 得到OkHttpUtils实例对象
* @return
*/
public static OkUntil getInstance(){
if(null == okUntil){
synchronized (OkUntil.class){
if(null == okUntil){
okUntil = new OkUntil();
}
}
}
return okUntil;
}
/**
* Get请求
* @param path
* @param onFinishListener
*/
public void doGet(String path, final OnFinishListener onFinishListener){
//Http:/www.baidu.com?key=ddd&
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new CommonParamsInterceptor())
.build();
//构建请求项
Request request = new Request.Builder()
.get()
.url(path)
.build();
Call call = okHttpClient.newCall(request);
//execute 子线程 enqueue //
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
//请求失败
handler.post(new Runnable() {
@Override
public void run() {
onFinishListener.onFailed(e.getMessage());
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//得到服务器的响应结果
final String result = response.body().string();
//请求成功
handler.post(new Runnable() {
@Override
public void run() {
//主线程当中执行
onFinishListener.onSuccess(result);
}
});
}
});
}
}
OnFinishListener
public interface OnFinishListener {
void onFailed(String msg);
void onSuccess(String result);
}
OkMoudle
public class OkMoudle implements IMoudle,OnFinishListener {
private IParesenter iParesenter;
@Override
public void getJson(String path, IParesenter iParesenter) {
this.iParesenter = iParesenter;
OkUntil okUntil = OkUntil.getInstance();//通过单例模式获取一个OK请求对象
okUntil.doGet(path,this);//通过get方法获取请求数据
}
@Override
public void onFailed(String msg) {
iParesenter.getJsonFailed(msg);
}
@Override
public void onSuccess(String result) {
iParesenter.getJsonSuccess(result);
}
}
UpStatusParesenter
public class UpStatusParesenter implements IParesenter {
private IMoudle iMoudle;
private IUpStatus iUpStatus;
public UpStatusParesenter(IUpStatus iUpStatus) {
iMoudle = new OkMoudle();
this.iUpStatus = iUpStatus;
}
@Override
public void getJson(String path) {
iMoudle.getJson(path,this);
}
@Override
public void getJsonSuccess(String result) {
Gson gson = new Gson();
UpUser upUser = gson.fromJson(result, UpUser.class);
if (upUser.getCode().equals("0")){
iUpStatus.upSuccess(upUser.getMsg());
}else {
iUpStatus.upFailed(upUser.getMsg());
}
}
@Override
public void getJsonFailed(String msg) {
iUpStatus.upFailed(msg);
}
@Override
public void destroy() {
if (iUpStatus != null){
iUpStatus = null;
}
}
}
DdRecyclerAdapter
public class DdRecyclerAdapter extends RecyclerView.Adapter<DdRecyclerAdapter.ViewHolder> implements IUpStatus {
private Context context;
private List<MyddInfo.DataBean> data;
private String uid;
public DdRecyclerAdapter(Context context, List<MyddInfo.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(context).inflate(R.layout.mydd_recy_item, parent, false);
ViewHolder holder = new ViewHolder(inflate);
return holder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
if (data.get(position).getStatus() == 0) {
holder.mdd_item_status.setText("订单状态:未支付");
} else if (data.get(position).getStatus() == 1) {
holder.mdd_item_status.setText("订单状态:已支付");
} else {
holder.mdd_item_status.setText("订单状态:已取消");
}
final IParesenter iParesenter = new UpStatusParesenter(this);
holder.mydd_item_title.setText(data.get(position).getTitle());
holder.mydd_item_price.setText("订单总价:" + data.get(position).getPrice());
holder.mdd_item_ddId.setText("订单号:" + data.get(position).getOrderid() + "");
holder.mydd_item_creatTime.setText("创建时间:" + data.get(position).getCreatetime());
final int orderid = data.get(position).getOrderid();
final SharedPreferences log = context.getSharedPreferences("LOG", Activity.MODE_PRIVATE);
holder.mdd_item_esc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String uid = log.getString("uid", "");
final String token = log.getString("token", "");
iParesenter.getJson("https://www.zhaoapi.cn/product/updateOrder?uid=" + uid + "&token=" + token + "&status=" + 2 + "&orderId=" + orderid);
}
});
holder.mdd_item_pay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
uid = log.getString("uid", "");
final String token = log.getString("token", "");
iParesenter.getJson( "https://www.zhaoapi.cn/product/updateOrder?uid=" + uid + "&token=" + token + "&status=" + 1 + "&orderId=" + orderid);
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return data.size();
}
@Override
public void upSuccess(String result) {
Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
getDDAgain.getAgain();
}
GetDDAgain getDDAgain;
public void setGetDDAgain(TabFrag tabFrag) {
getDDAgain = tabFrag;
}
public interface GetDDAgain {
void getAgain();
}
@Override
public void upFailed(String msg) {
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
class ViewHolder extends RecyclerView.ViewHolder {
private final TextView mydd_item_price;
private final TextView mydd_item_title;
private final TextView mdd_item_pay;
private final TextView mdd_item_ddId;
private final TextView mdd_item_status;
private final TextView mydd_item_creatTime;
private final TextView mdd_item_esc;
public ViewHolder(View itemView) {
super(itemView);
mydd_item_price = itemView.findViewById(R.id.mydd_item_price);
mydd_item_title = itemView.findViewById(R.id.mydd_item_title);
mdd_item_pay = itemView.findViewById(R.id.mdd_item_pay);
mdd_item_ddId = itemView.findViewById(R.id.mdd_item_ddId);
mdd_item_status = itemView.findViewById(R.id.mdd_item_status);
mydd_item_creatTime = itemView.findViewById(R.id.mydd_item_creatTime);
mdd_item_esc = itemView.findViewById(R.id.mdd_item_esc);
}
}
}
TabFrag
public class TabFrag extends Fragment implements DdRecyclerAdapter.GetDDAgain {
private MyddInfo myddInfo;
private RecyclerView myDD_recycler;
private DdRecyclerAdapter adapter;
private LinearLayoutManager linearLayoutManager;
private SwipeRefreshLayout swip;
public void setMyddInfo(MyddInfo myddInfo) {
this.myddInfo = myddInfo;
int status = myddInfo.getData().get(0).getStatus();
System.out.println("状态" + status);
}
@SuppressLint("InflateParams")
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = LayoutInflater.from(getActivity()).inflate(R.layout.mdd_recycle, null);
myDD_recycler = inflate.findViewById(R.id.myDD_recycler);
swip = inflate.findViewById(R.id.swip);
return inflate;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String data = getArguments().getString("data");
List<MyddInfo.DataBean> data1 = myddInfo.getData();
List<MyddInfo.DataBean> data_0 = new ArrayList<MyddInfo.DataBean>();
for (int i = 0;i< data1.size(); i++){
if (data.equals("待支付")){
if (data1.get(i).getStatus() == 0){
data_0.add(data1.get(i));
}
}else if (data.equals("已支付")){
if (data1.get(i).getStatus() == 1){
data_0.add(data1.get(i));
}
}else if (data.equals("已取消")){
if (data1.get(i).getStatus() == 2){
data_0.add(data1.get(i));
}
}
}
adapter = new DdRecyclerAdapter(getActivity(),data_0);
adapter.setGetDDAgain(this);
linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayout.VERTICAL, false);
myDD_recycler.setItemAnimator(new DefaultItemAnimator());
myDD_recycler.setLayoutManager(linearLayoutManager);
myDD_recycler.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.HORIZONTAL));
myDD_recycler.setAdapter(adapter);
adapter.notifyDataSetChanged();
myDD_recycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
private int lastVisibleItemPosition;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
switch (newState){
case RecyclerView.SCROLL_STATE_IDLE:
if(adapter.getItemCount() - 1 == lastVisibleItemPosition ){
if (adapter.getItemCount() >= 3){
pageAdd.pageAdd();
}
}
break;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
lastVisibleItemPosition = linearLayoutManager.findLastVisibleItemPosition();
}
});
swip.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
pageAdd.pageDel();
}
});
}
private PageAdd pageAdd;
public void setPageAdd(PageAdd pageAdd){
this.pageAdd = pageAdd;
}
public void setTabAgain(MyDD myDD) {
this.tabAgain = myDD;
}
public interface PageAdd{
void pageAdd();
void pageDel();
}
@Override
public void getAgain() {
tabAgain.getTabAgain();
}
TabAgain tabAgain;
public interface TabAgain{
void getTabAgain();
}
}
myDD_recycler.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swip">
<android.support.v7.widget.RecyclerView
android:id="@+id/myDD_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp">
</android.support.v7.widget.RecyclerView>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
IMyDD
public interface IMyDD {
void getMyDDSuccess(MyddInfo myddInfo);
void getMyDDFailed(String msg);
}
mydd_recy_item.xml
<TextView
android:id="@+id/mydd_item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="title"
android:textSize="15sp" />
<TextView
android:id="@+id/mydd_item_creatTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="创建时间为:2018.1.1" />
<TextView
android:id="@+id/mdd_item_ddId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="订单号" />
<TextView
android:id="@+id/mydd_item_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="price"
android:textColor="#DA7568"
android:textSize="15sp" />
<TextView
android:id="@+id/mdd_item_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="订单状态" />
<TextView
android:layout_marginTop="10dp"
android:textColor="@color/red"
android:text="点击进行支付"
android:id="@+id/mdd_item_pay"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_marginTop="10dp"
android:textColor="@color/red"
android:text="点击取消订单"
android:id="@+id/mdd_item_esc"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
IMyDDParesenter.java
public class IMyDDParesenter implements IParesenter {
private IMyDD iMyDD;
private OkMoudle okMoudle;
public IMyDDParesenter(IMyDD iMyDD) {
this.iMyDD = iMyDD;
okMoudle = new OkMoudle();
}
@Override
public void getJson(String path) {
okMoudle.getJson(path,this);
}
@Override
public void getJsonSuccess(String result) {
if (result == "null"){
return;
}
Gson gson = new Gson();
MyddInfo myddInfo = gson.fromJson(result, MyddInfo.class);
if (myddInfo == null){
iMyDD.getMyDDFailed("没有数据了");
}
if (myddInfo.getCode().equals("0")){
iMyDD.getMyDDSuccess(myddInfo);
}else {
iMyDD.getMyDDFailed(myddInfo.getMsg());
}
}
@Override
public void getJsonFailed(String msg) {
iMyDD.getMyDDFailed("连接服务器失败");
}
@Override
public void destroy() {
if (iMyDD != null){
iMyDD = null;
}
}
}