一,布局
1,主布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="60dp" android:textColor="#fff000" android:textSize="20sp" android:text="商品列表" android:gravity="center" android:background="#375478" /> <RadioGroup android:gravity="center" android:orientation="horizontal" android:id="@+id/group" android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioButton android:padding="10dp" android:button="@null" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="全部" android:id="@+id/raido01" android:textSize="18sp" /> <RadioButton android:padding="10dp" android:button="@null" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="待支付" android:id="@+id/raido02" android:textSize="18sp" /> <RadioButton android:textSize="18sp" android:padding="10dp" android:button="@null" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="已支付" android:id="@+id/raido03" /> <RadioButton android:padding="10dp" android:button="@null" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="已取消" android:id="@+id/raido04" android:textSize="18sp" /> </RadioGroup> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </LinearLayout>
2,fragment_item1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.liaoinstan.springview.widget.SpringView android:id="@+id/springView" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView01" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </com.liaoinstan.springview.widget.SpringView> </LinearLayout>3, fragment_item2.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.liaoinstan.springview.widget.SpringView android:id="@+id/springView" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView01" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </com.liaoinstan.springview.widget.SpringView> </LinearLayout>4, fragment_item3.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.liaoinstan.springview.widget.SpringView android:id="@+id/springView" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView01" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </com.liaoinstan.springview.widget.SpringView> </LinearLayout>
5,fragment_item4.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#ff0000" android:layout_height="match_parent"> <com.liaoinstan.springview.widget.SpringView android:id="@+id/springView" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView01" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </com.liaoinstan.springview.widget.SpringView> </LinearLayout>
6,fragmentone_item.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_marginBottom="10dp" android:background="#fff" android:layout_height="80dp"> <LinearLayout android:layout_marginLeft="10dp" android:layout_alignParentLeft="true" android:layout_gravity="center" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:id="@+id/titleIt" /> <TextView android:textColor="#f00" android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="价格" android:id="@+id/price" /> <TextView android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timeGreate" android:text="时间" /> </LinearLayout> <LinearLayout android:id="@+id/linear" android:layout_marginRight="10dp" android:gravity="center" android:layout_alignParentRight="true" android:layout_gravity="center" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" android:text="已取消" /> <Button android:layout_marginTop="20dp" android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮" /> </LinearLayout> <TextView android:layout_below="@+id/linear" android:layout_width="match_parent" android:layout_height="1dp" android:background="#f00" /> </RelativeLayout>
二,m层
1,
public class ModuleChange { public void getData(String status, String id, final ModuleChangeListener moduleChangeListener){ OkHttpUtils.getInstance().doGet("http://120.27.23.105/product/updateOrder?uid=71&status="+status+"&orderId="+id, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); moduleChangeListener.success(string); } }); } public interface ModuleChangeListener{ void success(String s); } }
2,
public class MyModule { public void getData(String uid,String page, final ModuleListeren moduleListeren){ Map<String,String> map = new HashMap<>(); map.put("uid",uid); map.put("page",page); map.put("source","android"); OkHttpUtils.getInstance().doPost("https://www.zhaoapi.cn/product/getOrders", map, new Callback() { @Override public void onFailure(Call call, IOException e) { if(moduleListeren !=null){ moduleListeren.failed(e); } } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); if(moduleListeren!=null){ moduleListeren.success(string); } } }); } public interface ModuleListeren{ void success(String s); void failed(Exception e); } }
3,
public class MyModuleOther { public void getData(String uid,String page,String status, final ModuleListeren moduleListeren){ Map<String,String> map = new HashMap<>(); map.put("uid",uid); map.put("page",page); map.put("status",status); map.put("source","android"); OkHttpUtils.getInstance().doPost("https://www.zhaoapi.cn/product/getOrders", map, new Callback() { @Override public void onFailure(Call call, IOException e) { if(moduleListeren !=null){ moduleListeren.failed(e); } } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); if(moduleListeren!=null){ moduleListeren.success(string); } } }); } public interface ModuleListeren{ void success(String s); void failed(Exception e); } }
三: p层
1,
public class MyPresenter implements RadioGroup.OnCheckedChangeListener{ MyModule myModule = new MyModule(); Handler handler =new Handler(Looper.getMainLooper()); ContentListeren contentListeren; public void setToast(ContentListeren contentListeren) { this.contentListeren =contentListeren; } public void getData(String uid,String page, final PresenterListeren presenterListeren){ myModule.getData(uid,page, new MyModule.ModuleListeren() { @Override public void success(final String s) { handler.post(new Runnable() { @Override public void run() { DataDataBean dataDataBean = new Gson().fromJson(s, DataDataBean.class); List<DataDataBean.DataBean> data = dataDataBean.getData(); presenterListeren.success(data); } }); } @Override public void failed(Exception e) { } }); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ default:break; case R.id.raido01: contentListeren.setContent(0); break; case R.id.raido02: contentListeren.setContent(1); break; case R.id.raido03: contentListeren.setContent(2); break; case R.id.raido04: contentListeren.setContent(3); break; } } public interface PresenterListeren{ void success(List<DataDataBean.DataBean> data); void failed(); } public interface ContentListeren{ void setContent(int i); } }
2,
public class MyPresenterOther { MyModuleOther myModule = new MyModuleOther(); Handler handler =new Handler(Looper.getMainLooper()); public void getData(String uid,String page,String status, final PresenterListerenOther presenterListeren){ myModule.getData(uid,page,status, new MyModuleOther.ModuleListeren() { @Override public void success(final String s) { handler.post(new Runnable() { @Override public void run() { DataDataBean dataDataBean = new Gson().fromJson(s, DataDataBean.class); List<DataDataBean.DataBean> data = dataDataBean.getData(); presenterListeren.success(data); } }); } @Override public void failed(Exception e) { } }); } public interface PresenterListerenOther{ void success(List<DataDataBean.DataBean> data); void failed(); }
3,
public class PresenterChange { private ModuleChange moduleChange = new ModuleChange(); PresenterChangeListener presenterChangeListener; public PresenterChange(PresenterChangeListener presenterChangeListener) { this.presenterChangeListener = presenterChangeListener; } private Handler handler = new Handler(Looper.getMainLooper()); public void getData(String status,String id){ moduleChange.getData(status, id, new ModuleChange.ModuleChangeListener() { @Override public void success(final String s) { handler.post(new Runnable() { @Override public void run() { DataChangeBean dataChangeBean = new Gson().fromJson(s, DataChangeBean.class); if(presenterChangeListener !=null){ presenterChangeListener.mySuccess(dataChangeBean); } } }); } }); } public interface PresenterChangeListener{ void mySuccess(DataChangeBean dataChangeBean); } }
四,OK
public class OkHttpUtils { private static OkHttpUtils okHttpUtils=null; private static OkHttpClient client; private OkHttpUtils(){ } public static OkHttpUtils getInstance(){ if(okHttpUtils == null){ okHttpUtils = new OkHttpUtils(); client = new OkHttpClient().newBuilder() .readTimeout(20, TimeUnit.SECONDS) .connectTimeout(20,TimeUnit.SECONDS) .build(); } return okHttpUtils; } public void doGet(String url, Callback callback){ Request request = new Request.Builder() .url(url) .build(); client.newCall(request).enqueue(callback); } public void doPost(String url, Map<String,String> params,Callback callback){ FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String,String> entry : params.entrySet()){ builder.add(entry.getKey(),entry.getValue()); } FormBody formBody = builder.build(); Request request = new Request.Builder() .url(url) .post(formBody) .build(); client.newCall(request).enqueue(callback); } }
五,bean
1,
DataChangeBean
public class DataChangeBean { /** * 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; } }2,
DataDataBean
public class DataDataBean { /** * msg : 请求成功 * code : 0 * data : [{"createtime":"2017-10-19T20:28:43","orderid":20,"price":100,"status":2,"title":"订单标题测试3","uid":71},{"createtime":"2017-10-19T20:44:40","orderid":31,"price":11800,"status":2,"title":"订单标题测试14","uid":71},{"createtime":"2017-10-19T20:44:51","orderid":32,"price":11800,"status":1,"title":"订单标题测试15","uid":71},{"createtime":"2017-10-20T08:02:07","orderid":43,"price":11800,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-10-20T08:02:16","orderid":44,"price":11800,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-10-22T15:14:39","orderid":890,"price":11800,"status":2,"title":"","uid":71},{"createtime":"2017-11-09T09:17:20","orderid":1446,"price":99.99,"status":1,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:20:58","orderid":1447,"price":567,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:20:58","orderid":1448,"price":256.99,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:20:58","orderid":1449,"price":399,"status":2,"title":"订单标题测试","uid":71}] * page : 1 */ 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; } } }
六,适配器
1,
MyAdapter
public class MyAdapter extends RecyclerView.Adapter{ Context context; List<DataDataBean.DataBean> data; public MyAdapter(Context context, List<DataDataBean.DataBean> data) { this.context = context; this.data = data; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.fragmentone_item,null); return new ViewHolder1(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { ViewHolder1 holder1 = (ViewHolder1) holder; holder1.time.setText("创建时间:"+data.get(position).getCreatetime()); holder1.title.setText(data.get(position).getTitle()); holder1.price.setText("价格:"+data.get(position).getPrice()+""); if(data.get(position).getStatus() ==0){ holder1.textView.setTextColor(Color.RED); holder1.btn.setText("取消订单"); holder1.textView.setText("待支付"); }else if(data.get(position).getStatus()==1){ holder1.btn.setText("查看订单"); holder1.textView.setText("已支付"); }else{ holder1.btn.setText("已取消"); holder1.textView.setText("查看订单"); } //点击事件,接口回调 holder1.btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(setStatus!=null){ setStatus.getStatus(data.get(position).getStatus()+"",data.get(position).getOrderid()+""); notifyDataSetChanged(); } } }); } SetStatus setStatus; public void setChangeStatus(SetStatus setStatus){ this.setStatus = setStatus; } //点击接口回调 public interface SetStatus{ void getStatus(String status, String id); } @Override public int getItemCount() { return data.size(); } class ViewHolder1 extends RecyclerView.ViewHolder { TextView title; TextView price; Button btn; TextView textView; TextView time; public ViewHolder1(View itemView) { super(itemView); time = itemView.findViewById(R.id.timeGreate); title = itemView.findViewById(R.id.titleIt); price = itemView.findViewById(R.id.price); btn = itemView.findViewById(R.id.btn); textView = itemView.findViewById(R.id.textview); } } }
2,
MyViewpagerAdapter
public class MyViewpagerAdapter extends FragmentPagerAdapter{ List<Fragment> data; public MyViewpagerAdapter(FragmentManager fm, List<Fragment> data) { super(fm); this.data=data; } @Override public Fragment getItem(int position) { return data.get(position); } @Override public int getCount() { return data.size(); } }
七,fragment
1
FragmentFour
public class FragmentFour extends Fragment implements MyPresenterOther.PresenterListerenOther { private RecyclerView recyclerView; private SpringView springView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_item1,container,false); recyclerView = view.findViewById(R.id.recyclerView01); springView = view.findViewById(R.id.springView); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); final MyPresenterOther myPresenter = new MyPresenterOther(); myPresenter.getData("71","1","2",this); } @Override public void success(List<DataDataBean.DataBean> data) { recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); MyAdapter myAdapter = new MyAdapter(getActivity(),data); recyclerView.setAdapter(myAdapter); } @Override public void failed() { } }2,
FragmentOne
public class FragmentOne extends Fragment implements MyPresenter.PresenterListeren, PresenterChange.PresenterChangeListener { private RecyclerView recyclerView; private SpringView springView; private int num=1; private MyAdapter myAdapter; private MyPresenter myPresenter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_item1,container,false); recyclerView = view.findViewById(R.id.recyclerView01); springView = view.findViewById(R.id.springView); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); myPresenter = new MyPresenter(); myPresenter.getData("71","1",this); springView.setHeader(new DefaultHeader(getActivity())); springView.setFooter(new DefaultFooter(getActivity())); springView.setListener(new SpringView.OnFreshListener() { @Override public void onRefresh() { num=1; String s = String.valueOf(num); myPresenter.getData("71",s,FragmentOne.this); springView.onFinishFreshAndLoad(); } @Override public void onLoadmore() { num++; String s = String.valueOf(num); myPresenter.getData("71",s,FragmentOne.this); springView.onFinishFreshAndLoad(); } }); } @Override public void success(List<DataDataBean.DataBean> data) { recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); myAdapter = new MyAdapter(getActivity(),data); myAdapter.setChangeStatus(new MyAdapter.SetStatus() { @Override public void getStatus(String status, String id) { PresenterChange presenterChange = new PresenterChange(FragmentOne.this); presenterChange.getData(status,id); } }); recyclerView.setAdapter(myAdapter); } @Override public void failed() { } @Override public void mySuccess(DataChangeBean dataChangeBean) { myPresenter.getData("71","1",FragmentOne.this); if(dataChangeBean.getCode().equals("0")){ Toast.makeText(getActivity(),dataChangeBean.getMsg()+"",Toast.LENGTH_SHORT).show(); } } }3,
FragmentThree
public class FragmentThree extends Fragment implements MyPresenterOther.PresenterListerenOther { private RecyclerView recyclerView; private SpringView springView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_item3,container,false); recyclerView = view.findViewById(R.id.recyclerView01); springView = view.findViewById(R.id.springView); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); final MyPresenterOther myPresenter = new MyPresenterOther(); myPresenter.getData("71","1","1",this); } @Override public void success(List<DataDataBean.DataBean> data) { recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); MyAdapter myAdapter = new MyAdapter(getActivity(),data); recyclerView.setAdapter(myAdapter); } @Override public void failed() { } }4,
FragmentTwo
public class FragmentTwo extends Fragment implements MyPresenterOther.PresenterListerenOther { private RecyclerView recyclerView; private SpringView springView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_item2,container,false); recyclerView = view.findViewById(R.id.recyclerView01); springView = view.findViewById(R.id.springView); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); final MyPresenterOther myPresenter = new MyPresenterOther(); myPresenter.getData("71","1","0",this); } @Override public void success(List<DataDataBean.DataBean> data) { recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); MyAdapter myAdapter = new MyAdapter(getActivity(),data); recyclerView.setAdapter(myAdapter); } @Override public void failed() { } }
八,ACTIVITY
public class MainActivity extends AppCompatActivity { /** * 待支付 */ private RadioButton mRaido01; /** * 已支付 */ private RadioButton mRaido02; /** * 已取消 */ private RadioButton mRaido03; private RadioGroup mGroup; private ViewPager mViewpager; private MyPresenter myPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); myPresenter = new MyPresenter(); mGroup.setOnCheckedChangeListener(myPresenter); List<Fragment> list = new ArrayList<>(); list.add(new FragmentOne()); list.add(new FragmentTwo()); list.add(new FragmentThree()); list.add(new FragmentFour()); myPresenter.setToast(new MyPresenter.ContentListeren() { @Override public void setContent(int i) { switch (i){ default:break; case 0: mViewpager.setCurrentItem(0,true); break; case 1: mViewpager.setCurrentItem(1,true); break; case 2: mViewpager.setCurrentItem(2,true); break; case 3: mViewpager.setCurrentItem(3,true); break; } } }); MyViewpagerAdapter myViewpagerAdapter = new MyViewpagerAdapter(getSupportFragmentManager(),list); mViewpager.setAdapter(myViewpagerAdapter); } private void initView() { mRaido01 = (RadioButton) findViewById(R.id.raido01); mRaido02 = (RadioButton) findViewById(R.id.raido02); mRaido03 = (RadioButton) findViewById(R.id.raido03); mGroup = (RadioGroup) findViewById(R.id.group); mViewpager = (ViewPager) findViewById(R.id.viewpager); } }