M1
package com.example.weekwe;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;
import com.example.weekwe.frgment.Fregmenter;
import com.example.weekwe.frgment.Fregmentone;
public class Main2Activity extends AppCompatActivity {
private ViewPager viewpager;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
viewpager.setCurrentItem(0);
return true;
case R.id.navigation_notifications:
viewpager.setCurrentItem(1);
return true;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
viewpager=findViewById(R.id.viewpager);
final BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
//适配器
viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
return new Fregmentone();
case 1:
return new Fregmenter();
}
return null;
}
@Override
public int getCount() {
return 2;
}
});
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i){
case 0:
navigation.setSelectedItemId(R.id.navigation_home);
break;
case 1:
navigation.setSelectedItemId(R.id.navigation_notifications);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
}
网络请求
package com.example.weekwe.utils;
import android.os.Handler;
import com.example.weekwe.api.API;
import com.example.weekwe.callback.ResponseCallBack;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
public class OkHttpUtils {
private Handler handler=new Handler();
//单例
public static OkHttpUtils measure;
private OkHttpClient okHttpClient;
//私有方法
private OkHttpUtils(){
//拦截器
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
okHttpClient = new OkHttpClient.Builder()
//添加日志拦截器
.addInterceptor(interceptor)
.addNetworkInterceptor(interceptor)
.writeTimeout(5, TimeUnit.SECONDS)
.connectTimeout(5, TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS)
.build();
}
//单例模式
public static OkHttpUtils getMeasure() {
if (measure==null){
synchronized (OkHttpClient.class){
if (measure==null){
measure=new OkHttpUtils();
}
}
}
return measure;
}
//get请求
public void doGet(String path, final HashMap<String,String> map, final OkHttpCallback callBack){
//Request
Request request = new Request.Builder()
.get()
.url(path)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
if (callBack!=null){
callBack.failure("请求失败");
}
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String result = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.success(result);
}
});
}
});
}
//post请求
public void doPost(String path, HashMap<String,String> map, final OkHttpCallback callback) {
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entry<String, String> par : map.entrySet()) {
builder.add(par.getKey(), par.getValue());
}
RequestBody requestBody = builder.build();
final Request request = new Request.Builder()
.post(requestBody)
.url(path)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (callback!=null){
callback.failure("请求失败");
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (callback!=null){
callback.success(response.body().string());
}
}
});
}
}
P层
package com.example.weekwe.persenter;
import com.example.weekwe.bean.LeftBean;
import com.example.weekwe.bean.RightBean;
import com.example.weekwe.callback.ResponseCallBack;
import com.example.weekwe.cantran.DataCantan;
import com.example.weekwe.model.DataModel;
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.List;
public class DataPersent extends DataCantan.CPersenter {
private DataCantan.Cview cview;
private DataModel model;
public DataPersent(DataCantan.Cview cview) {
this.cview = cview;
model=new DataModel();
}
@Override
public void leftshow(HashMap<String, String> map) {
if (model!=null){
model.leftmodel(map, new ResponseCallBack() {
@Override
public void leftSuccess(String result) {
//json
LeftBean leftBean = new Gson().fromJson(result, LeftBean.class);
List<LeftBean.Lecls> data = leftBean.data;
cview.leftSuess(data);
}
@Override
public void rightSuccess(String result) {
}
@Override
public void leftFailure(String error) {
}
@Override
public void rightFailure(String error) {
}
});
}
}
@Override
public void rightshow(HashMap<String, String> map) {
model.rightmodel(map, new ResponseCallBack() {
@Override
public void leftSuccess(String result) {
}
@Override
public void rightSuccess(String result) {
RightBean rightBean = new Gson().fromJson(result, RightBean.class);
List<RightBean.Rgcls> data = rightBean.data;
cview.rightSuess(data);
}
@Override
public void leftFailure(String error) {
}
@Override
public void rightFailure(String error) {
}
});
}
}
M层
package com.example.weekwe.model;
import android.os.Handler;
import com.example.weekwe.api.CAPI;
import com.example.weekwe.bean.LeftBean;
import com.example.weekwe.callback.ResponseCallBack;
import com.example.weekwe.cantran.DataCantan;
import com.example.weekwe.utils.OkHttpCallback;
import com.example.weekwe.utils.OkHttpUtils;
import java.util.HashMap;
public class DataModel implements DataCantan.CModel {
Handler handler = new Handler();
@Override
public void leftmodel(HashMap<String, String> map, final ResponseCallBack callBack) {
OkHttpUtils.getMeasure().doGet(CAPI.LE, map, new OkHttpCallback() {
@Override
public void success(String msg) {
if (callBack!=null){
callBack.leftSuccess(msg);
}
}
@Override
public void failure(String string) {
if (callBack!=null){
callBack.leftFailure(string);
}
}
});
}
@Override
public void rightmodel(HashMap<String, String> map, final ResponseCallBack callBack) {
OkHttpUtils.getMeasure().doPost(CAPI.RE, map, new OkHttpCallback() {
@Override
public void success(final String msg) {
if (callBack!=null){
handler.post(new Runnable() {
@Override
public void run() {
callBack.rightSuccess(msg);
}
});
}
}
@Override
public void failure(final String string) {
if (callBack!=null){
handler.post(new Runnable() {
@Override
public void run() {
callBack.rightFailure(string);
}
});
}
}
});
}
}
Frgmentone
package com.example.weekwe.frgment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.example.weekwe.R;
import com.example.weekwe.adapter.LeftAdapter;
import com.example.weekwe.adapter.RightAdapter;
import com.example.weekwe.api.API;
import com.example.weekwe.api.CAPI;
import com.example.weekwe.bean.LeftBean;
import com.example.weekwe.bean.RightBean;
import com.example.weekwe.cantran.DataCantan;
import com.example.weekwe.persenter.DataPersent;
import java.util.HashMap;
import java.util.List;
public class Fregmentone extends Fragment implements DataCantan.Cview ,LeftAdapter.ItemOClick{
private RecyclerView leftrev,rightrev;
private DataPersent dataPersent;
private LeftAdapter leftAdapter;
private RightAdapter rightAdapter;
private String cid="1";
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.one,container,false);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView(view);
initData();
}
private void initView(View view) {
//找控件
leftrev=view.findViewById(R.id.leftrev);
rightrev=view.findViewById(R.id.rightrev);
//设置适配器
leftAdapter = new LeftAdapter(getActivity());
rightAdapter = new RightAdapter(getActivity());
//布局管理
leftrev.setLayoutManager(new LinearLayoutManager(getActivity()));
rightrev.setLayoutManager(new LinearLayoutManager(getActivity()));
//添加适配器
leftrev.setAdapter(leftAdapter);
rightrev.setAdapter(rightAdapter);
leftAdapter.setItemOClick(this);
dataPersent = new DataPersent(this);
}
private void initData() {
dataPersent.leftshow(new HashMap<String, String>());
getLeft();
}
private void getLeft() {
HashMap<String, String> p2 = new HashMap<>();
p2.put("cid",cid);
dataPersent.rightshow(p2);
}
@Override
public void leftSuess(List<LeftBean.Lecls> list) {
if (list!=null){
leftAdapter.setList(list);
}
}
@Override
public void rightSuess(List<RightBean.Rgcls> list) {
if (list!=null){
rightAdapter.setList(list);
}
}
@Override
public void leftDefeat(String resule) {
Toast.makeText(getActivity(),resule,Toast.LENGTH_SHORT).show();
}
@Override
public void rightDefeat(String resule) {
Toast.makeText(getActivity(),resule,Toast.LENGTH_SHORT).show();
}
@Override
public void Click(String cid) {
this.cid=null;
this.cid=cid;
getLeft();
Toast.makeText(getActivity(),"点击了",Toast.LENGTH_SHORT).show();
}
}
契约类
package com.example.weekwe.cantran;
import com.example.weekwe.bean.LeftBean;
import com.example.weekwe.bean.RightBean;
import com.example.weekwe.callback.ResponseCallBack;
import java.util.HashMap;
import java.util.List;
public interface DataCantan {
//P层
public abstract class CPersenter{
public abstract void leftshow(HashMap<String,String> map);
public abstract void rightshow(HashMap<String,String> map);
}
//m层
public interface CModel{
void leftmodel(HashMap<String,String>map, ResponseCallBack callBack);
void rightmodel(HashMap<String,String>map, ResponseCallBack callBack);
}
//V层
public interface Cview{
void leftSuess(List<LeftBean.Lecls> list);
void rightSuess(List<RightBean.Rgcls> list);
void leftDefeat(String resule);
void rightDefeat(String resule);
}
}
左边适配器
package com.example.weekwe.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.weekwe.R;
import com.example.weekwe.bean.LeftBean;
import java.util.ArrayList;
import java.util.List;
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.LeftViewHolder> {
private Context context;
private List<LeftBean.Lecls> list;
public LeftAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setList(List<LeftBean.Lecls> list) {
if (list!=null){
this.list = list;
}
notifyDataSetChanged();
}
@NonNull
@Override
public LeftViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=View.inflate(context,R.layout.left_item,null);
LeftViewHolder leftViewHolder = new LeftViewHolder(view);
return leftViewHolder;
}
@Override
public void onBindViewHolder(@NonNull LeftViewHolder leftViewHolder,final int i) {
leftViewHolder.leftzi.setText(list.get(i).name);
leftViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (itemOClick!=null){
itemOClick.Click(list.get(i).cid);
}
}
});
}
@Override
public int getItemCount() {
return this.list.size();
}
public class LeftViewHolder extends RecyclerView.ViewHolder {
private TextView leftzi;
public LeftViewHolder(@NonNull View itemView) {
super(itemView);
leftzi=itemView.findViewById(R.id.leftzi);
}
}
private ItemOClick itemOClick;
public void setItemOClick(ItemOClick itemOClick) {
this.itemOClick = itemOClick;
}
public interface ItemOClick{
void Click(String cid);
}
}
右边适配器
package com.example.weekwe.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.weekwe.R;
import com.example.weekwe.bean.RightBean;
import java.util.ArrayList;
import java.util.List;
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.RightViewHolder> {
private Context context;
private List<RightBean.Rgcls> list;
public RightAdapter(Context context) {
this.context = context;
list=new ArrayList<>();
}
public void setList(List<RightBean.Rgcls> list) {
if (list!=null){
this.list = list;
}
notifyDataSetChanged();
}
@NonNull
@Override
public RightViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=View.inflate(context,R.layout.right_item,null);
RightViewHolder rightViewHolder = new RightViewHolder(view);
return rightViewHolder;
}
@Override
public void onBindViewHolder(@NonNull RightViewHolder rightViewHolder, int i) {
rightViewHolder.rightzi.setText(list.get(i).name);
//视图管理
rightViewHolder.rev.setLayoutManager(new GridLayoutManager(context,3));
ItemAdapter itemAdapter = new ItemAdapter(context);
rightViewHolder.rev.setAdapter(itemAdapter);
itemAdapter.setList(list.get(i).list);
}
@Override
public int getItemCount() {
return this.list.size();
}
public class RightViewHolder extends RecyclerView.ViewHolder {
private TextView rightzi;
private RecyclerView rev;
public RightViewHolder(@NonNull View itemView) {
super(itemView);
rightzi=itemView.findViewById(R.id.rightzi);
rev=itemView.findViewById(R.id.rev);
}
}
}
子条目适配器
package com.example.weekwe.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.weekwe.R;
import com.example.weekwe.bean.RightBean;
import java.util.ArrayList;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
private Context context;
private List<RightBean.Rgcls.Pcls> list;
public ItemAdapter(Context context) {
this.context = context;
list=new ArrayList<>();
}
public void setList(List<RightBean.Rgcls.Pcls> list) {
if (list!=null){
this.list = list;
}
notifyDataSetChanged();
}
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=View.inflate(context,R.layout.item_you,null);
ItemViewHolder itemViewHolder = new ItemViewHolder(view);
return itemViewHolder;
}
@Override
public void onBindViewHolder(@NonNull ItemViewHolder itemViewHolder, int i) {
itemViewHolder.titles.setText(this.list.get(i).name);
String[] image=list.get(i).icon.split("\\|");
if (image!=null&&image.length>0){
Glide.with(context).load(image[0]).into(itemViewHolder.tp);
}
}
@Override
public int getItemCount() {
return list.size();
}
public class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView titles;
private ImageView tp;
public ItemViewHolder(@NonNull View itemView) {
super(itemView);
titles=itemView.findViewById(R.id.titles);
tp=itemView.findViewById(R.id.tp);
}
}
}