(一)
1.//因为是网络请求所以在AndroidManifest中加上网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
2.//在请求数据时需要使用Gson和Picasso(图片的解析)和guava(网络数据装换成string类型)
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.google.guava:guava:16.0.1'
implementation 'com.squareup.picasso:picasso:2.3.2'
(二)
1.声明网络地址,例如
new LoadDataTask().execute("http://172.17.8.100/mobile/exam/findCommodityList");
2.Activity中因为需要时异步获取所以需要重写两个方法
class LoadDataTask extends AsyncTask<String, Void, String> { @Override protected Bean doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); //判断网络连接状态 if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { // 使用guava 转换字符流 return CharStreams.toString(new InputStreamReader(connection.getInputStream(), "UTF-8")); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) {
Gson gson = new Gson(); NewsBean newsBean = gson.fromJson(s, NewsBean.class); list_view.setAdapter(new NewsAdapter(getActivity(), newsBean.getData().getTech()));}
(三)
//创建完Bean包然后创建Adapter包
Context context;
List<NewsBean.DataBean.TechBean> list;
public NewsAdapter(Context context, List<NewsBean.DataBean.TechBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View conview, ViewGroup viewGroup) {
ViewHodler hodler = null;
if (conview==null){
hodler = new ViewHodler();
conview = LayoutInflater.from(context).inflate(R.layout.item_layout,null,false);
hodler.js_title = conview.findViewById(R.id.jstitle);
hodler.js_category = conview.findViewById(R.id.jscategory);
hodler.js_url = conview.findViewById(R.id.jsurl);
conview.setTag(hodler);
}else{
hodler = (ViewHodler)conview.getTag();
}
//根据不同的数据设置
hodler.js_title.setText(list.get(i).getTitle());
hodler.js_category.setText(list.get(i).getCategory());
//判断条目是否有图片
if (list.get(i).getPicInfo() != null && list.get(i).getPicInfo().size() > 0) {
Picasso.get().load(list.get(i).getPicInfo().get(0).getUrl()).into(hodler.js_url);//图片
}
return conview;
}
class ViewHodler{
TextView js_title;
TextView js_category;
ImageView js_url;
}