okHttp解析到RecyclerView显示
来源:互联网 发布:神途游戏辅助编程 编辑:程序博客网 时间:2024/06/04 00:29
添加依赖,权限
compile 'com.google.code.gson:gson:2.8.1' compile 'com.android.support:recyclerview-v7:26.+' compile 'com.github.bumptech.glide:glide:3.8.0'<uses-permission android:name="android.permission.INTERNET"/>
接下来再写一个Bean类
HomeAdapter,RecyclerView的点击事件
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 java.util.List;/** * Created by 张政浩 on 2017/10/18. */public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> { private List<Bean.TopStoriesBean> mTop_stoires; private Context context; private MyItemClickListener mItemClickListener; public HomeAdapter(List<Bean.TopStoriesBean> mTop_stoires, Context context) { this.mTop_stoires = mTop_stoires; this.context = context; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false); MyViewHolder me = new MyViewHolder(view, mItemClickListener); return me; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(mTop_stoires.get(position).getTitle()); Glide.with(context).load(mTop_stoires.get(position).getImage()).into(holder.imageView); } @Override public int getItemCount() { return mTop_stoires != null ? mTop_stoires.size() : 0; } class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private MyItemClickListener myListener; private ImageView imageView; private TextView tv; public MyViewHolder(View view, MyItemClickListener myItemClickListener) { super(view); //将全局的监听赋值给接口 this.myListener = myItemClickListener; itemView.setOnClickListener(this); tv = (TextView) view.findViewById(R.id.tv_title); imageView = (ImageView) view.findViewById(R.id.image_Top); } /** * 实现OnClickListener接口重写的方法 * * @param view */ @Override public void onClick(View view) { if (myListener != null) { myListener.onItemClick(view, getPosition()); } } } /** * 创建一个回调接口 */ public interface MyItemClickListener { void onItemClick(View view, int position); } /** * 在activity中adapter就是调用这个方法,将点击事件监听传递过去,并赋值给全局的监听 */ public void setItemClickListener(MyItemClickListener myItemClickListener) { this.mItemClickListener = myItemClickListener; }}
main方法,ok进行解析
import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Toast;import com.google.gson.Gson;import java.io.IOException;import java.util.List;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class MainActivity extends AppCompatActivity {private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what==0){ Bean bean = (Bean) msg.obj; mTop_stories = bean.getTop_stories(); HomeAdapter homeAdapter = new HomeAdapter(mTop_stories, MainActivity.this); recyclerView.setAdapter(homeAdapter); homeAdapter.setItemClickListener(new HomeAdapter.MyItemClickListener() { @Override public void onItemClick(View view, int position) { Toast.makeText(MainActivity.this, mTop_stories.get(position).getTitle(), Toast.LENGTH_SHORT).show(); } }); } }}; private List<Bean.TopStoriesBean> mTop_stories; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取资源id initview(); //网络请求数据 getrequest(); } private void initview() { recyclerView = (RecyclerView) findViewById(R.id.recy); recyclerView.setLayoutManager(new LinearLayoutManager(this)); } private void getrequest() {new Thread(new Runnable() { @Override public void run() { OkHttpClient ok = new OkHttpClient(); Request request = new Request.Builder().url("http://news-at.zhihu.com/api/4/news/latest").build(); try { Response response = ok.newCall(request).execute(); final String s = response.body().string(); runOnUiThread(new Runnable() { @Override public void run() { Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); Message msg = new Message(); msg.what=0; msg.obj=bean; handler.sendMessage(msg); } }); } catch (Exception e) { e.printStackTrace(); } }}).start(); }}
主布局,一个RecyclerView
<android.support.v7.widget.RecyclerView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/recy" > </android.support.v7.widget.RecyclerView>
一个item布局
<ImageView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/image_Top" android:src="@mipmap/ic_launcher" /> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_title" android:textSize="20sp" android:text="1111" />
阅读全文
0 0
- okHttp解析到RecyclerView显示
- 关于OkHttp解析数据添加到RecyclerView
- Okhttp解析Gson数据并且展示到recyclerView
- Okhttp解析Gson数据并且展示到recyclerView
- OkHttp封装+RecyclerView显示网络请求数据
- An_MVP_模式(okhttp)解析RecyclerView/XRecyclerView
- okhttp+recyclerview
- okhttp+recyclerView
- RecyclerView okHttp
- OkHttp工具类+RecyclerView+点击事件+Glide显示图片
- 拦截器——okhttp(post)+recyclerView显示数据
- OkHttp解析数据,RecyclerView和Glide的加载图片
- RecyclerView的多条目展示,使用OkHttp解析数据
- OkHttp请求数据到RecyclerView多条目展示
- 网络请求数据添加到列表(okhttp+RecyclerView)
- Recyclerview数据显示错乱完全解析
- RecyclerView+OkHttp加载刷新
- 秦心,Recyclerview+okhttp
- Unity基础2_脚本操作对象
- AngularJS依赖注入 Value和Constant的区别
- 前端开发流程自动化
- 优秀工程师-UIResponder
- Shadowsocks Python版一键安装脚本
- okHttp解析到RecyclerView显示
- apply opatch has modification time 2.8e+04 s in the future
- Android 7.0 app升级内部安装apk—FileProvider使用
- STM32--固件库
- 基于HTML5及WebGL开发的2D3D第一人称漫游进行碰撞检测
- Image转Canvas注意事项
- docker使用总结
- 计数排序
- 校园招聘Java开发工程师需要掌握的技能