版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、android开发-ListView+Json+异步网络图片加载+滚动翻页的例子例子中用于解析Json的Gson请自己Google下载主Activity:?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
2、111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170packageCOM.Example.Main;importjava.util.HashMap;importjava.util.Iterator;importjava.util.LinkedList;importjava.util.List
3、;importjava.util.Map;importCOM.Example.Main.R;importCOM.Example.Main.stringGetJson.User;importandroid.app.Activity;importandroid.app.ListActivity;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view
4、.ViewGroup;importandroid.widget.AbsListView;importandroid.widget.AbsListView.OnScrollListener;importandroid.widget.ArrayAdapter;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.ListView;importandroid.widget.ProgressBar;importandroid.widget.TextView;publicclassstr
5、ingListActivity extendsListActivity privateMyAdapter mMyAdapter;privateLinkedList users = null;/ 当前Activity中的ListViewListView listView = null;intlastItem = 0;LinearLayout loadingLayout = null;OverridepublicvoidonCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.la
6、yout.foodlistactivity);listView = getListView();setLoadingLayout();newreadTask().execute(null);privatefinalclassMyAdapter extendsArrayAdapter publicMyAdapter(Activity activity, List newsList) super(activity, 0, newsList);privateMap viewMap = newHashMap();OverridepublicView getView(intposition, View
7、convertView, ViewGroup parent) ViewHolder holder;View rowView = this.viewMap.get(position);if(rowView = null) User user = users.get(position);LayoutInflater inflater = (Activity) this.getContext().getLayoutInflater();holder = newViewHolder();rowView = inflater.inflate(R.layout.foodlistactivity_item,
8、 null);holder.mNameText = (TextView) rowView.findViewById(R.id.foodItemUsername);holder.mPhoto = (ImageView) rowView.findViewById(R.id.foodItemPic);rowView.setTag(holder);holder.mNameText.setText(user.Name);if(!holder.mPhoto.isDrawingCacheEnabled() holder.mPhoto.setTag(user.Pic);newdownImageTask().e
9、xecute(holder.mPhoto);holder.mPhoto.setDrawingCacheEnabled(true);viewMap.put(position, rowView); elseholder = (ViewHolder) rowView.getTag();returnrowView;publicclassViewHolder publicTextView mNameText;publicImageView mPhoto;publicvoidsetLoadingLayout() LinearLayout layout = newLinearLayout(this);lay
10、out.setOrientation(LinearLayout.HORIZONTAL);ProgressBar progressBar = newProgressBar(this);progressBar.setPadding(0, 0, 15, 0);layout.addView(progressBar);TextView textView = newTextView(this);textView.setText(加载中.);textView.setGravity(Gravity.CENTER_VERTICAL);layout.addView(textView);layout.setGrav
11、ity(Gravity.CENTER);loadingLayout = newLinearLayout(this);loadingLayout.addView(layout);loadingLayout.setGravity(Gravity.CENTER);privateclassscrollListener implementsOnScrollListener OverridepublicvoidonScroll(AbsListView view, intfirstVisibleItem,intvisibleItemCount, inttotalItemCount) / 当listView中
12、没有数据,或者数据超过100条,或者不是10的整数倍(即数据不足)时隐藏“更多”并取消onScroll事件的绑定if(mMyAdapter.getCount() = 100| mMyAdapter.getCount() % 10 0| mMyAdapter.getCount() = 0) listView.removeFooterView(loadingLayout);listView.setOnScrollListener(null);lastItem = firstVisibleItem + visibleItemCount - 1;/ 这里减一是因为有FootViewOverridepu
13、blicvoidonScrollStateChanged(AbsListView view, intscrollState) if(lastItem = mMyAdapter.getCount()& scrollState = OnScrollListener.SCROLL_STATE_IDLE) / 进行翻页操作newscrollTask().execute(null);publicclassreadTask extendsAsyncTask OverrideprotectedVoid doInBackground(Object. arg0) users = newstringGetJson
14、().getJson();returnnull;OverrideprotectedvoidonPostExecute(Void result) listView.addFooterView(loadingLayout);mMyAdapter = newMyAdapter(stringListActivity.this, users);setListAdapter(mMyAdapter);listView.setOnScrollListener(newscrollListener();publicclassscrollTask extendsAsyncTask Overrideprotected
15、Void doInBackground(Object. arg0) for(Iterator iterator = newstringGetJson().getJson().iterator(); iterator.hasNext();) User user = (User) iterator.next();users.add(user);returnnull;OverrideprotectedvoidonPostExecute(Void result) mMyAdapter.notifyDataSetChanged();Json数据来源(这里的例子中把json字符串直接写在代码中了,实际项目
16、中需要改成从网络读取,例子中已经使用了多线程):?123456789101112131415161718192021222324252627282930313233343536packageCOM.Example.Main;importjava.lang.reflect.Type;importjava.util.Iterator;importjava.util.LinkedList;importandroid.database.MatrixCursor;importandroid.widget.ListView;importandroid.widget.TextView;importcom.g
17、oogle.gson.Gson;importcom.google.gson.reflect.TypeToken;publicclassstringGetJson / 设置临时ID,在项目中将被现实的id取代privateintid = 0;publicstringGetJson() super();/通过getJson方法从Json字符串获取User的列表publicLinkedList getJson() String jsonData = Name:xinuxForJson1,Pic:Type listType = newTypeTokenLinkedList() .getType();G
18、son gson = newGson();LinkedList users = gson.fromJson(jsonData, listType);returnusers;/为getJson提供了数据实体类finalstaticclassUser publicString Name;publicString Pic;图片下载AsyncTask?123456789101112131415161718192021222324packageCOM.Example.Main;importCOM.Example.FunctionUtility.Download;importandroid.graphic
19、s.Bitmap;importandroid.os.AsyncTask;importandroid.widget.ImageView;publicclassdownImageTask extendsAsyncTask ImageView gView = null;OverrideprotectedBitmap doInBackground(ImageView. arg0) gView = (ImageView)arg00;returnDownload.getBitmapFromUrl(gView.getTag().toString();OverrideprotectedvoidonPostExecute(Bitmap result) if(result != null)this.gView.setImageBitmap(result);this.gView = null;网络图片下载类:?12345678910111213141516
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025(人教版2019)英语必修第三册 Unit 4 单元解读课件
- 市政改善城市环保水晶
- 2024年生化化工药品技能考试-氯碱操作工笔试参考题库含答案
- 2024年环保气象安全技能考试-固体废物监测工笔试参考题库含答案
- 2024年火电电力职业技能鉴定考试-电工进网证笔试参考题库含答案
- 2024年湖南住院医师-湖南住院医师全科医学笔试参考题库含答案
- 2024年江西住院医师-江西住院医师骨科笔试参考题库含答案
- 光电子器件及激光器件项目市场研究报告及运营管理方案|瑞克咨询|2024年编制|
- 2024年水路交通运输技能考试-甲板工笔试参考题库含答案
- 2024年水利工程行业技能考试-水利工程造价师笔试参考题库含答案
- 高校经济责任制条例
- 2023年中华全国律师协会招聘5人(共500题含答案解析)笔试必备资料历年高频考点试题摘选
- 固定床列管式反应器设计说明书(曾礼菁)
- 《UI设计应用》课程思政典型案例
- 海南农信社2023年招聘人员笔试历年难、易错考点试题含答案附详解
- 学前幼儿园-守卫国家安全的人教学课件设计
- GB/T 38472-2023再生铸造铝合金原料
- 公共交通公司组建方案范文(三篇)
- 国旗下讲话稿之高中升旗仪式讲话稿:寸草春晖 感恩父母师长
- 煤矿供电灾害预防与处理安全技术措施
- 小区物业群诉应急预案方案
评论
0/150
提交评论