MVP展示数据详解

IContactShow
package com.example.day18;

/**
 * date: 2019/5/30 10:55
 * update: $date$
 * 数据
 */
public interface IContactShow {
    interface IModelShow{
        void getdata(String showurl, CallBackShow callBackshow);
    }
    interface IViewShow{
        void getdata(String showjson);
    }
    interface IPresenterShow{
        void startRequsl(String showurl);
        void Attch();
    }
    interface CallBackShow{
        void success(String json);
        void error();
    }
}
ModelShow
package com.example.day18.model;

import com.example.day18.IContact;
import com.example.day18.IContactShow;
import com.example.day18.MainActivity;
import com.example.volley.VolleyUtil;

/**
 * date: 2019/5/30 10:59
 * update: $date$
 * 数据
 */
public class ModelShow implements IContactShow.IModelShow {


    @Override
    public void getdata(String showurl, final IContactShow.CallBackShow callBackshow) {
        VolleyUtil.getInstance().getUrl(showurl, MainActivity.mContext, new VolleyUtil.VolleyCalback() {
            @Override
            public void success(String data) {
                callBackshow.success(data);
            }

            @Override
            public void error() {

            }
        });
    }
}
PresenterShow
package com.example.day18.presenter;

import com.example.day18.IContact;
import com.example.day18.IContactShow;
import com.example.day18.model.Model;
import com.example.day18.model.ModelShow;

/**
 * date: 2019/5/30 11:01
 * update: $date$
 * 数据
 */
public class PresenterShow implements IContactShow.IPresenterShow {
    private IContactShow.IModelShow mIModelShow;
    private IContactShow.IViewShow mIViewShow;

    public PresenterShow(IContactShow.IViewShow mIViewShow) {
        this.mIModelShow = new ModelShow();
        this.mIViewShow = mIViewShow;
    }

    @Override
    public void startRequsl(String showurl) {
        mIModelShow.getdata(showurl, new IContactShow.CallBackShow() {
            @Override
            public void success(String json) {
                mIViewShow.getdata(json);
            }

            @Override
            public void error() {

            }
        });
    }

    @Override
    public void Attch() {

    }
}
VolleyUtil
package com.example.volley;

import android.content.Context;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import java.util.HashMap;
import java.util.Map;

/**
 * date: 2019/5/30 11:19
 * update: $date$
 */
public class VolleyUtil {
    private VolleyUtil(){

    }
    private static class HolderVolley{
        private static final VolleyUtil volleyUtil = new VolleyUtil();
    }
    public static VolleyUtil getInstance(){
        return HolderVolley.volleyUtil;
    }
    //封装Get请求
    public void getUrl(String url,Context context,final VolleyCalback calback){
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                calback.success(response);
            }
        }, null);
        requestQueue.add(stringRequest);
    }

    //封装Post请求
    public void postUrl(String url,String phone,String pwd, Context context,final VolleyCalback calback){
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        final HashMap<String,String> params = new HashMap<>();
        params.put("phone",phone);
        params.put("pwd",pwd);
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                calback.success(response);
            }
        }, null){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                return params;
            }
        };
        requestQueue.add(stringRequest);
    }

    public interface VolleyCalback{
        void success(String data);
        void error();
    }


}

 

ShowActivity
package com.example.day18;

import android.os.Bundle;
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.widget.RadioButton;
import android.widget.RadioGroup;

import com.example.fragment.FaFragment;
import com.example.fragment.FenFragment;
import com.example.fragment.GoFragment;
import com.example.fragment.ShoFragment;
import com.example.fragment.WoFragment;

import java.util.ArrayList;

public class ShowActivity extends AppCompatActivity {

    private ViewPager view_pager;
    private RadioButton btn1;
    private RadioButton btn2;
    private RadioButton btn3;
    private RadioButton btn4;
    private RadioButton btn5;
    private RadioGroup radio_group;
    //fragment
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        initView();

        final ArrayList<Fragment> listf = new ArrayList<>();
        listf.add(new ShoFragment());
        listf.add(new FenFragment());
        listf.add(new FaFragment());
        listf.add(new GoFragment());
        listf.add(new WoFragment());

        view_pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int i) {
                return listf.get(i);
            }

            @Override
            public int getCount() {
                return listf.size();
            }
        });

        radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i){
                    case R.id.btn1:
                        view_pager.setCurrentItem(0);
                        break;
                    case R.id.btn2:
                        view_pager.setCurrentItem(1);
                        break;
                    case R.id.btn3:
                        view_pager.setCurrentItem(2);
                        break;
                    case R.id.btn4:
                        view_pager.setCurrentItem(3);
                        break;
                    case R.id.btn5:
                        view_pager.setCurrentItem(4);
                        break;
                }
            }
        });

    }

    private void initView() {
        view_pager = (ViewPager) findViewById(R.id.view_pager);
        btn1 = (RadioButton) findViewById(R.id.btn1);
        btn2 = (RadioButton) findViewById(R.id.btn2);
        btn3 = (RadioButton) findViewById(R.id.btn3);
        btn4 = (RadioButton) findViewById(R.id.btn4);
        btn5 = (RadioButton) findViewById(R.id.btn5);
        radio_group = (RadioGroup) findViewById(R.id.radio_group);
    }


}
ShoFragment
package com.example.fragment;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.example.adapter.GroupAdapter;
import com.example.adapter.LinearAdapter;
import com.example.api.API;
import com.example.bean.GBean;
import com.example.bean.NewBean;
import com.example.moni01.IContact;
import com.example.moni01.R;
import com.example.moni01.presenter.Presenter;
import com.google.gson.Gson;

import java.util.ArrayList;

public class ShoFragment extends BaseFragment implements IContact.IView {
    private RecyclerView recy_linear,recy_group;
    private ArrayList<NewBean.ResultBean> list = new ArrayList<>();
    private LinearAdapter adapter;
    private Presenter presenter;
    private GroupAdapter gadapter;
    private boolean boo = true;
    private ArrayList<GBean.ResultBean> glist = new ArrayList<>();
    private Button btn2;
    //二级列表
    @Override
    protected int initlayout() {
        return R.layout.sho_fragment;
    }

    @Override
    protected void initview(View view) {
        recy_linear = view.findViewById(R.id.recy_linear);
        LinearLayoutManager manager = new LinearLayoutManager(getActivity());
        manager.setOrientation(LinearLayoutManager.VERTICAL);
        recy_linear.setLayoutManager(manager);

        recy_group = view.findViewById(R.id.recy_group);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 3);
        gridLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recy_group.setLayoutManager(gridLayoutManager);


    }

    @Override
    protected void initdata() {

        presenter = new Presenter(this);
        adapter = new LinearAdapter(getActivity(),list);
        recy_linear.setAdapter(adapter);

        gadapter = new GroupAdapter(getActivity(),glist);
        recy_group.setAdapter(gadapter);
        presenter.startResult(API.shoUrl);
        itemclick();
    }

    private void itemclick() {

        adapter.setonitemclick(new LinearAdapter.OnItemClickListener() {
            @Override
            public void setitemonClick(View view, int position) {
                boo = false;
                adapter.setTextColor(position);
                String id = list.get(position).getId();
                presenter.startResult(API.shoUrlg+id);
            }
        });

        gadapter.setonitemclick(new GroupAdapter.OnItemClickListener() {
            @Override
            public void setitemonClick(View view, int position) {
//                Toast.makeText(getActivity(),"dd",Toast.LENGTH_SHORT).show();
                RadioButton btn2 = getActivity().findViewById(R.id.btn2);
                btn2.setChecked(true);

            }
        });
    }


    @Override
    public void getdata(String json) {
        Log.e("TAG", "getdata: "+json );
        Gson gson = new Gson();
        if (boo){
//            list.clear();
            NewBean newBean = gson.fromJson(json, NewBean.class);
            list.addAll(newBean.getResult());
            adapter.notifyDataSetChanged();

        }else{
            glist.clear();
            GBean gBean = gson.fromJson(json, GBean.class);
            glist.addAll(gBean.getResult());
            gadapter.notifyDataSetChanged();
        }

    }
}
LinearAdapter
package com.example.adapter;

import android.content.Context;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.bean.NewBean;
import com.example.moni01.R;

import java.util.List;

/**
 * date: 2019/5/29 10:49
 * update: $date$
 * 一级条目
 */
public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.Holder> implements View.OnClickListener {
    private Context context;
    private List<NewBean.ResultBean> list;
    private int mIndex = -1;

    public LinearAdapter(Context context, List<NewBean.ResultBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public LinearAdapter.Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);
        Holder holder = new Holder(view);
        view.setOnClickListener(this);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull LinearAdapter.Holder holder, int i) {
        holder.name.setText(list.get(i).getName());
        holder.itemView.setTag(i);
        if (i==mIndex){
            holder.name.setTextColor(Color.RED);
        }else{
            holder.name.setTextColor(Color.BLACK);
        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    //改变点击的文字颜色
    public void setTextColor(int position){
        this.mIndex = position;
        notifyDataSetChanged();
    }

    public interface OnItemClickListener {
        void setitemonClick(android.view.View view,int position);
    }

    private OnItemClickListener mOnItemClickListener;

    public void setonitemclick(OnItemClickListener mOnItemClickListener) {
        this.mOnItemClickListener = mOnItemClickListener;
    }

    @Override
    public void onClick(View view) {
        if (mOnItemClickListener!=null){
            mOnItemClickListener.setitemonClick(view, (Integer) view.getTag());
        }
    }


    public class Holder extends RecyclerView.ViewHolder{
        private TextView name;
        public Holder(@NonNull View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.name);
        }
    }
}
GroupAdapter
package com.example.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.bean.GBean;
import com.example.bean.NewBean;
import com.example.moni01.R;

import java.util.ArrayList;
import java.util.List;

/**
 * date: 2019/5/29 14:05
 * update: $date$
 * 二级条目
 */
public class GroupAdapter extends RecyclerView.Adapter<GroupAdapter.Holder> implements View.OnClickListener {
    private Context context;
    private List<GBean.ResultBean> list;

    public GroupAdapter(Context context, List<GBean.ResultBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public GroupAdapter.Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_group,viewGroup,false);
        Holder holder = new Holder(view);
        view.setOnClickListener(this);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull GroupAdapter.Holder holder, int i) {
        holder.text1.setText(list.get(i).getName());
        Glide.with(context).load(list.get(i)).placeholder(R.mipmap.ic_launcher).centerCrop().error(R.mipmap.ic_launcher_round).into(holder.pick);
        holder.itemView.setTag(i);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    public interface OnItemClickListener {
        void setitemonClick(android.view.View view,int position);
    }

    private OnItemClickListener mOnItemClickListener;

    public void setonitemclick(OnItemClickListener mOnItemClickListener) {
        this.mOnItemClickListener = mOnItemClickListener;
    }

    @Override
    public void onClick(View view) {
        if (mOnItemClickListener!=null){
            mOnItemClickListener.setitemonClick(view, (Integer) view.getTag());
        }
    }

    public class Holder extends RecyclerView.ViewHolder {
        private ImageView pick;
        private TextView text1;
        public Holder(@NonNull View itemView) {
            super(itemView);
            pick = itemView.findViewById(R.id.pick);
            text1 = itemView.findViewById(R.id.text1);
        }
    }
}
WoFragmentJS
package com.example.fragment;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.Toast;

import com.example.moni01.R;

public class WoFragment extends BaseFragment implements View.OnClickListener {
    private Button Change_color,jing;
    private WebView web_view;
    private String mUrl = "https://abnerming8.github.io/abnerming.html";
    //webview交互
    @Override
    protected int initlayout() {
        return R.layout.wo_fragment;
    }

    @Override
    protected void initview(View view) {
        Change_color = view.findViewById(R.id.Change_color);
        web_view = view.findViewById(R.id.web_view);
        jing = view.findViewById(R.id.jing);
    }

    @Override
    protected void initdata() {
        web_view.loadUrl(mUrl);
        //获取设置管理器
        WebSettings settings = web_view.getSettings();
        //开启权限可以跟js交互都权限
        settings.setJavaScriptEnabled(true);
        //Alert弹窗需要我们开启权限
        settings.setJavaScriptEnabled(true);
        //添加你和html5要交互的方法  参数1:是定义两边需要交互的方法
        //2:就是html那边的调用者
        web_view.addJavascriptInterface(new TestTwo(),"android");
        web_view.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        });
        web_view.setWebChromeClient(new WebChromeClient(){
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                return super.onJsAlert(view, url, message, result);
            }
        });
        Change_color.setOnClickListener(this);
        jing.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.Change_color:
                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        web_view.loadUrl("javascript:changeColor('#d43c3c')");

                    }
                });
                break;
            case R.id.jing:
                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        web_view.loadUrl("javascript:toast()");

                    }
                });
                break;
        }
    }

    private class TestTwo {
        @JavascriptInterface
        public void show(){
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getActivity(),"赵静宇",Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值