android开发--ListView+Json+异步网络图片加载+滚动翻页的例子_第1页
android开发--ListView+Json+异步网络图片加载+滚动翻页的例子_第2页
android开发--ListView+Json+异步网络图片加载+滚动翻页的例子_第3页
android开发--ListView+Json+异步网络图片加载+滚动翻页的例子_第4页
android开发--ListView+Json+异步网络图片加载+滚动翻页的例子_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论