MainActivity.java如下:
package cn.ideallistview;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ListView;//ListView中的Item顯示一張網狀圖片//流程://1 試圖從記憶體的緩衝中擷取// 1.1從一級緩衝(強引用)中尋找圖片// 1.2從二級緩衝(若引用)中尋找圖片// 若1失敗轉入2//2 試圖從SDCard的File中擷取// 若2失敗轉入3//3 從網路下載圖片// 3.1將下載後的圖片儲存至SDCard的File中// 3.2將從SDCard的File中擷取的圖片返回給ListView顯示// 3.3將從SDCard的File中擷取的圖片儲存至記憶體的緩衝// 3.3.1若一級緩衝剩餘空間足夠儲存該圖片則儲存至一級緩衝// 若失敗轉入3.3.2// 3.3.2將一級緩衝中最陳舊的元素放入二級緩衝.// 再次核實一級緩衝存剩餘空間,直至有足夠空間存放圖片 public class MainActivity extends Activity { ListView listView; ListViewAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); } public void initView() {Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new ButtonOnClickListener());listView = (ListView) findViewById(R.id.listView);ArrayList<ListViewItem> arrayList = new ArrayList<ListViewItem>();ListViewItem item1 = new ListViewItem("xxxx","http://images.csdn.net/20121018/zazhi-68-78-1018.jpg");arrayList.add(item1);ListViewItem item2 = new ListViewItem("xxxx","http://info-database.csdn.net/Upload/2012-10-08/zazhi-210-90-1008.jpg");arrayList.add(item2);ListViewItem item3 = new ListViewItem("xxxx","http://images.csdn.net/20121119/20111211223655841.jpg");arrayList.add(item3);ListViewItem item4 = new ListViewItem("xxxx","http://images.csdn.net/20121119/20120619174604972.jpg");arrayList.add(item4);ListViewItem item5 = new ListViewItem("xxxx","http://csdnimg.cn/www/images/pic_foot_report110.png");arrayList.add(item5);ListViewItem item6 = new ListViewItem("xxxx","http://csdnimg.cn/www/images/pic_foot_report.png");arrayList.add(item6);ListViewItem item7 = new ListViewItem("xxxx","http://csdnimg.cn/www/images/pic_foot_BNIA.png");arrayList.add(item7);ListViewItem item8 = new ListViewItem("xxxx","http://csdnimg.cn/www/images/pic_foot_gongshang.png");arrayList.add(item8);ListViewItem item9 = new ListViewItem("xxxx","http://images.csdn.net/20120803/logo-qixing02.jpg");arrayList.add(item9);ListViewItem item10 = new ListViewItem("xxxx","http://images.csdn.net/20120726/quanjing-logo-shouye.jpg");arrayList.add(item10);ListViewItem item11 = new ListViewItem("xxxx","http://images.csdn.net/20120726/nhn-logo-shouye.jpg");arrayList.add(item11);ListViewItem item12 = new ListViewItem("xxxx","http://images.csdn.net/20120510/shanghai-jiaoda-logo.jpg");arrayList.add(item12);ListViewItem item13 = new ListViewItem("xxxx","http://images.csdn.net/20120312/bigman2.gif");arrayList.add(item13);ListViewItem item14 = new ListViewItem("xxxx","http://images.csdn.net/20120216/csdn2.gif");arrayList.add(item14);ListViewItem item15 = new ListViewItem("xxxx","http://images.csdn.net/20121109/win8_100x74.jpg");arrayList.add(item15);ListViewItem item16 = new ListViewItem("xxxx","http://images.csdn.net/20120816/cf-20120816.jpg");arrayList.add(item16);ListViewItem item17 = new ListViewItem("xxxx","http://images.csdn.net/20120704/bi05.jpg");arrayList.add(item17);ListViewItem item18 = new ListViewItem("xxxx","http://images.csdn.net/20120816/amd-20120816.jpg");arrayList.add(item18);ListViewItem item19 = new ListViewItem("xxxx","http://y2.ifengimg.com/2012/12/08/09383369.jpg");arrayList.add(item19);ListViewItem item20 = new ListViewItem("xxxx","http://y1.ifengimg.com/2012/12/08/09320040.jpg");arrayList.add(item20);ListViewItem item21 = new ListViewItem("xxxx","http://y3.ifengimg.com/4ccd6020154f55cb/2012/1207/2.jpg");arrayList.add(item21);ListViewItem item22 = new ListViewItem("xxxx","http://y2.ifengimg.com/2012/12/08/09425571.jpg");arrayList.add(item22);ListViewItem item23 = new ListViewItem("xxxx","http://y2.ifengimg.com/b19fadab6fcc0645/2012/1011/123.jpg");arrayList.add(item23);ListViewItem item24 = new ListViewItem("xxxx","http://y2.ifengimg.com/2012/11/15/07414772.jpg");arrayList.add(item24);ListViewItem item25 = new ListViewItem("xxxx","http://y2.ifengimg.com/2012/11/15/07532374.jpg");arrayList.add(item25);ListViewItem item26 = new ListViewItem("xxxx","http://y0.ifengimg.com/2012/11/15/07583017.jpg");arrayList.add(item26);ListViewItem item27 = new ListViewItem("xxxx","http://y0.ifengimg.com/2012/02/20/14175732.jpg");arrayList.add(item27);ListViewItem item28 = new ListViewItem("xxxx","http://y2.ifengimg.com/2012/10/29/21175274.jpg");arrayList.add(item28);ListViewItem item29 = new ListViewItem("xxxx","http://res.news.ifeng.com/2727e09814adca26/2011/1221/rdn_4ef0fb0333564.jpg");arrayList.add(item29);ListViewItem item30 = new ListViewItem("xxxx","http://y1.ifengimg.com/2012/12/04/10060551.jpg");arrayList.add(item30);ListViewItem item31 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec068537d8f6.jpg");arrayList.add(item31);ListViewItem item32 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec068554fa3f.jpg");arrayList.add(item32);ListViewItem item33 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec06853bd85b.jpg");arrayList.add(item33);ListViewItem item34 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec06854ace88.jpg");arrayList.add(item34);ListViewItem item35 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec06855bad01.jpg");arrayList.add(item35);ListViewItem item36 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec0685649c4e.jpg");arrayList.add(item36);ListViewItem item37 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec068562ac3d.jpg");arrayList.add(item37);ListViewItem item38 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec06854dc836.jpg");arrayList.add(item38);ListViewItem item39 = new ListViewItem("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec06855ef0ea.jpg");arrayList.add(item39);//ListViewItem item40 = new ListViewItem//("xxxx","http://res.news.ifeng.com/b77953a0c6aae8fb/2011/1114/rdn_4ec068568beda.jpg");//arrayList.add(item40);ListViewItem item40 = new ListViewItem("xxxx","http://s12.sinaimg.cn/middle/4b181bd0gbf6cb07c2a1b&690");arrayList.add(item40);adapter = new ListViewAdapter(arrayList, MainActivity.this);listView.setAdapter(adapter);} @Override public void onDestroy() { listView.setAdapter(null); super.onDestroy(); } private class ButtonOnClickListener implements OnClickListener{@Overridepublic void onClick(View v) { adapter.imageLoader.clearCache(); //adapter.notifyDataSetChanged();} } }
ListViewAdapter.java如下:
package cn.ideallistview;import java.util.ArrayList;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import cn.loadImages.ImageLoader;public class ListViewAdapter extends BaseAdapter { private static LayoutInflater inflater=null; public ImageLoader imageLoader; private ArrayList<ListViewItem> mArrayList; private Context mContext; public ListViewAdapter(ArrayList<ListViewItem> mArrayList,Context mContext) { super(); this.mArrayList = mArrayList; this.mContext = mContext; inflater=(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); imageLoader=new ImageLoader(mContext); } public int getCount() {if (mArrayList==null) {return 0;} else {return mArrayList.size();}}public Object getItem(int position) {if (mArrayList==null) {return null;} else { return mArrayList.get(position);}}public long getItemId(int position) {return position;} public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder=null;if (convertView==null) {holder=new ViewHolder();convertView=inflater.inflate(R.layout.listviewitem, null, false);holder.textView=(TextView) convertView.findViewById(R.id.textView); holder.imageView=(ImageView) convertView.findViewById(R.id.imageView); convertView.setTag(holder);} else { holder=(ViewHolder) convertView.getTag();}if (this.mArrayList!=null) {ListViewItem listViewItem=this.mArrayList.get(position);if (holder.textView!=null) {holder.textView.setText(listViewItem.getContent());}if (holder.imageView!=null) {try {String imageUrl=listViewItem.getImageURL();//載入網路上的圖片imageLoader.displayImage(imageUrl, holder.imageView);} catch (Exception e) {e.printStackTrace();}}} return convertView; } private class ViewHolder{ImageView imageView;TextView textView;}}
ListViewItem.java如下:
package cn.ideallistview;public class ListViewItem {String content;String imageURL;public ListViewItem(String content, String imageURL) {super();this.content = content;this.imageURL = imageURL;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getImageURL() {return imageURL;}public void setImageURL(String imageURL) {this.imageURL = imageURL;}}
main.xml如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"/> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Clear FileCache"/></LinearLayout>
listviewitem.xml如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/imageView" android:layout_width="50dip" android:layout_height="50dip" android:src="@drawable/stub" android:scaleType="centerCrop"/> <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="left|center_vertical" android:textSize="20dip" android:layout_marginLeft="10dip"/></LinearLayout>