网络请求数据

(一)

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;
}

猜你喜欢

转载自blog.csdn.net/H_BuilDer/article/details/81488778