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