二 列 弯弯

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);
    }
}

}

猜你喜欢

转载自blog.csdn.net/weixin_43250402/article/details/86546480