依赖:
implementation 'com.squareup.okhttp3:okhttp:3.2.0'
implementation 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
implementation 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.facebook.fresco:fresco:0.14.1'
权限和清单文件的注册
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
<uses-permission android:name="android.permission.INTERNET"/>
android:name=".MyApp"
接口类
public class Constant {
public static final String URL = "http://www.zhaoapi.cn/";
}
拼接的接口
public interface MyServerInterface {
@GET("product/getCatagory")
Call<ResponseBody> getLatestJsonString();
}
activity
public class MainActivity extends AppCompatActivity {
private RecyclerView rlv;
private MyServerInterface mMyServerInterface = null;
private Call<ResponseBody> mCall;
private NewsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constant.URL)
.build();
mMyServerInterface = retrofit.create(MyServerInterface.class);
mCall = mMyServerInterface.getLatestJsonString();
mCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccess() && response.body() != null){
Log.d("yz", "---->threadId:" + Thread.currentThread().getId());
try {
String result = response.body().string();
Log.e("yz",""+result);
Gson gson = new Gson();
News news = gson.fromJson(result, News.class);
List<News.DataBean> data = news.getData();
adapter = new NewsAdapter(data,MainActivity.this);
LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);
rlv.setLayoutManager(manager);
rlv.setAdapter(adapter);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_SHORT).show();
}
});
}
private void initView() {
rlv = (RecyclerView) findViewById(R.id.rlv);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mCall != null){
mCall.cancel();
}
}
}
adapter
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
private List<News.DataBean> mList;
private Context mContext;
public NewsAdapter(List<News.DataBean> list, Context context) {
mList = list;
mContext = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(mContext,R.layout.item_news,null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.text.setText(mList.get(position).getName());
holder.sdv.setImageURI(mList.get(position).getIcon());
}
@Override
public int getItemCount() {
return mList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView text;
SimpleDraweeView sdv;
public ViewHolder(View itemView) {
super(itemView);
text = itemView.findViewById(R.id.text_content);
sdv = itemView.findViewById(R.id.sdv);
}
}
}
布局就不上了