效果图片: 功能很简单,只是联网下载图片并显示到本地的ListView中,但是用到了不少知识点,相信大家能学到一点东西! 废话不多说,进入正题: 我尽量详细的表述: 第一步:新建项目,在XML文件中配置ListView 第二步:将通用适配器的两个类copy到项目中,将需要使用到的框架也copy进libs文件夹中,修改包名,导包啥的,弄到没红叉 第三步:在MainActivity中定义: 1private ListView lv;//ListView 2 List<Map<String,Object>> list;//存放网络数据的集合 3.CommAdapter<String> myadapter;//通用适配器 4.private RequestQueue requestQueue;//Volley框架的请求队列 5.private JsonObjectRequest jsonObjectRequest;//Volley框架的Json对象请求对象 6.String url="";//接口,这里借用的别人的接口 7.String data;//Gson解析需要将获取到的数据转化为字符串 第四步:开干 lv=(ListView) findViewById(R.id.lv);//绑定ListView list=new ArrayList<Map<String,Object>>();//实例化数据集合 getData();//联网获取数据并保存到list集合中,这里的数据是每个ListView item图片的链接 myadapter=new CommAdapter<String>(MainActivity.this, list, R.layout.list_item) {// @Override public void convert(CommViewHolder holder, Map<String, Object> item) { // TODO Auto-generated method stub // 这里的三个参数分别是 要展示网络图片的控件id 图片链接 选用哪种请求框架(0:UniversalImageLoader 1:Volley) // holder.setImageByUrl(R.id.imageView1, item.get("imgUrl").toString(),0); holder.setImageByUrl(R.id.imageView1, item.get("imgUrl").toString(),1); } }; lv.setAdapter(myadapter); private void getData() { // TODO Auto-generated method stub //联网请求数据 requestQueue=Volley.newRequestQueue(MainActivity.this); jsonObjectRequest=new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // TODO Auto-generated method stub try { //获得JSONArray并转化为字符串 JSONArray array=response.getJSONObject("data").getJSONArray("data"); data=array.toString(); //通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作: Type listType = new TypeToken<LinkedList<URL>>() { }.getType(); Gson gson = new Gson(); LinkedList<URL> users = gson.fromJson(data, listType); for (Iterator<URL> iterator = users.iterator(); iterator.hasNext();) { URL user = (URL) iterator.next(); Map<String,Object> map=new HashMap<String, Object>();//{imgUrl=http://imgt6.bdstatic.com/it/u=3,646431099&fm=151&gp=0.jpg} map.put("imgUrl",user.getThumbnail_url()); list.add(map); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub } }); requestQueue.add(jsonObjectRequest); } 大功告成:有几点需要注意的: 1.如果要使用universalimageloader框架,必须建立一个GlobalApplication类继承Application并实例化一些方法 2.需要在清单中配置GlobalApplication: <application android:name="包名.GlobalApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > 我的Demo: |
一个Demo搞定Gson解析+Volley框架+Universal框架+通用适配器
最新推荐文章于 2024-09-30 15:37:45 发布