添加依赖,权限
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"
/>