需要的依赖
compile 'com.squareup.okhttp3:okhttp:3.4.1' compile 'com.squareup.okio:okio:1.5.0' compile 'com.google.code.gson:gson:2.6.2' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.android.support:support-v4:26.1.0'需要权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
MainActivity
package com.lixinyang.okhttpclient_test; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.google.gson.Gson; import com.lixinyang.okhttpclient_test.Adapers.MyAdapter; import com.lixinyang.okhttpclient_test.Bean.images; import com.lixinyang.okhttpclient_test.Utils.OkHttpUtils; import java.util.List; public class MainActivity extends AppCompatActivity { String key = "e0258b2d33ba47188d8a7f8f1524f100"; String uri="http://v.juhe.cn/toutiao/index?type=top&key="+key; private RecyclerView rv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); OkHttpUtils utils = new OkHttpUtils(); utils.getOkHttpdata(uri); utils.setOkHttoListener(new OkHttpUtils.getOkHttpListener() { @Override public void error(String error) { Toast.makeText(MainActivity.this,error,Toast.LENGTH_SHORT).show(); } @Override public void success(String json) { Gson gson = new Gson(); images image = gson.fromJson(json, images.class); final List<images.ResultBean.DataBean> list = image.getResult().getData(); MyAdapter adapter = new MyAdapter(MainActivity.this,list); rv.setLayoutManager(new LinearLayoutManager(MainActivity.this)); rv.setItemAnimator(new DefaultItemAnimator()); rv.setAdapter(adapter); adapter.setItem(new MyAdapter.getItemListener() { @Override public void aa(int position) { Intent intent = new Intent(MainActivity.this, Main2Activity.class); String url = list.get(position).getUrl(); intent.putExtra("url", url); startActivity(intent); } }); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.item,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case R.id.one: rv.setLayoutManager(new LinearLayoutManager(MainActivity.this)); break; case R.id.two: rv.setLayoutManager(new GridLayoutManager(MainActivity.this,2)); break; case R.id.three: rv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); break; } return super.onOptionsItemSelected(item); } private void init() { rv = (RecyclerView) findViewById(R.id.rv); } }
Main2Activity
package com.lixinyang.myapplications; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; /** * author:Created by WangZhiQiang on 2018/1/2. */ public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); WebView webView = (WebView) findViewById(R.id.webView); String url = getIntent().getStringExtra("url"); Log.i("jibbbb",url); webView.loadUrl(url); //设置 webView.setWebViewClient(new WebViewClient());//不去跳转到浏览器 WebSettings settings = webView.getSettings();//获得设置页面的权限 settings.setJavaScriptCanOpenWindowsAutomatically(true);//s设置javascript弹窗 settings.setJavaScriptEnabled(true);//是安卓支持js脚本 } }OkHttpUtils
package com.lixinyang.okhttpclient_test.Utils; import android.os.Handler; import android.os.Message; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * author:Created by WangZhiQiang on 2018/1/3. */ public class OkHttpUtils { Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int what = msg.what; if(what==0){ String error = (String) msg.obj; okHttoListener.error(error); } if(what==1){ String json = (String) msg.obj; okHttoListener.success(json); } } }; private getOkHttpListener okHttoListener; public void getOkHttpdata(String uri){ OkHttpClient client = new OkHttpClient(); FormBody build = new FormBody.Builder() .add("type", "top") .add("key", "e0258b2d33ba47188d8a7f8f1524f100") .build(); Request request = new Request.Builder().url(uri).post(build).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Message msg = new Message(); msg.what=0; msg.obj = "请求失败"; handler.sendMessage(msg); } @Override public void onResponse(Call call, Response response) throws IOException { Message msg = new Message(); msg.what = 1; msg.obj = response.body().string(); handler.sendMessage(msg); } }); } public interface getOkHttpListener{ void error(String error); void success(String json); } public void setOkHttoListener(getOkHttpListener okHttoListener){ this.okHttoListener = okHttoListener; } }MyAdapter
package com.lixinyang.okhttpclient_test.Adapers; import android.content.Context; 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.lixinyang.okhttpclient_test.Bean.images; import com.lixinyang.okhttpclient_test.R; import java.util.List; /** * author:Created by WangZhiQiang on 2018/1/3. */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private Context context; private List<images.ResultBean.DataBean> list; private getItemListener item; public MyAdapter(Context context, List<images.ResultBean.DataBean> list){ this.context = context; this.list = list; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.activity_item, null); MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(final MyViewHolder holder, int position) { /* holder.getTextView1().setText(list.get(position).getTitle()); holder.getTextView2().setText(list.get(position).getSubhead()); String s = list.get(position).getImages().substring(0, list.get(position).getImages().indexOf("|"));*/ //Glide.with(context).load(s).into(holder.getImageView()); holder.getTextView1().setText(list.get(position).getTitle()); holder.getTextView2().setText(list.get(position).getDate()); Glide.with(context).load(list.get(position).getThumbnail_pic_s()).into(holder.getImageView()); if(item!=null){ holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int i = holder.getLayoutPosition(); item.aa(i); } }); } } @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder{ private final TextView textView1; private final TextView textView2; private final ImageView imageView; public MyViewHolder(View itemView) { super(itemView); this.textView1 = itemView.findViewById(R.id.tv1); this.textView2 = itemView.findViewById(R.id.tv2); this.imageView = itemView.findViewById(R.id.iv); } public TextView getTextView1() { return textView1; } public TextView getTextView2() { return textView2; } public ImageView getImageView() { return imageView; } } public interface getItemListener{ void aa(int position); } public void setItem(getItemListener item){ this.item = item; } }