Android通过LIstView显示文件列表
来源:互联网 发布:linux finger不存在 编辑:程序博客网 时间:2024/06/08 12:27
网络112 曾琴
在Android中通过ListView显示SD卡中的文件列表一共有两种方法,一是:通过继承ListActivity显示;二是:利用BaseAdapter显示。BaseAdapter是一个公共基类适配器,用于对ListView和Spinner等 一些控件提供显示数据。下面是利用BaseAdapter类来实现通过LIstView显示SD卡的步骤:
1.main.xml界面设计,如下图
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical" > 6 7 <TextView 8 android:id="@+id/Txt_Path" 9 android:layout_width="fill_parent"10 android:layout_height="wrap_content"11 android:text="@string/hello" />12 13 <Button14 android:id="@+id/But_Up"15 android:layout_width="wrap_content"16 android:layout_height="wrap_content"17 android:text="向上" />18 19 <ListView20 android:id="@+id/List_View"21 android:layout_width="match_parent"22 android:layout_height="wrap_content" >23 24 </ListView>25 26 </LinearLayout>
2.item.xml界面设计,如下图
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/RelativeLayout1" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <TextView 9 android:id="@+id/Txt_Size"10 android:layout_width="wrap_content"11 android:layout_height="wrap_content"12 android:layout_alignParentRight="true"13 android:layout_alignParentTop="true"14 android:text="TextView" />15 16 <ImageView17 android:id="@+id/image_ico"18 android:layout_width="wrap_content"19 android:layout_height="wrap_content"20 android:layout_alignParentLeft="true"21 android:layout_below="@+id/Txt_Size"22 android:layout_marginLeft="18dp"23 android:src="@drawable/folder" />24 25 <TextView26 android:id="@+id/Txt_Name"27 android:layout_width="wrap_content"28 android:layout_height="wrap_content"29 android:layout_alignBottom="@+id/image_ico"30 android:layout_alignParentRight="true"31 android:text="TextView" />32 33 </RelativeLayout>
效果图main.xml
效果图item.xml
3.File_Adter类的实现
1 package com.cqvie; 2 3 import java.io.File; 4 import java.util.LinkedList; 5 import java.util.List; 6 7 import android.app.Activity; 8 import android.graphics.Bitmap; 9 import android.graphics.BitmapFactory;10 import android.view.View;11 import android.view.ViewGroup;12 import android.widget.BaseAdapter;13 import android.widget.ImageView;14 import android.widget.TextView;15 16 public class File_Adter extends BaseAdapter {17 public Activity activity; //创建View时必须要提供Context18 public List<File> list=new LinkedList<File>(); //数据源(文件列表)19 public String currPath;//当前路径20 private Bitmap bmp_folder,bmp_file;21 22 public int getCount() {23 // TODO Auto-generated method stub24 return list.size();25 }26 27 public Object getItem(int arg0) {28 // TODO Auto-generated method stub29 return null;30 }31 32 public long getItemId(int position) {33 // TODO Auto-generated method stub34 return position;35 }36 37 public View getView(int position, View arg1, ViewGroup arg2) {38 // TODO Auto-generated method stub39 View v=View.inflate(activity,R.layout.item,null);40 TextView Txt_Name=(TextView) v.findViewById(R.id.Txt_Name);41 TextView Txt_Size=(TextView) v.findViewById(R.id.Txt_Size);42 ImageView img=(ImageView) v.findViewById(R.id.image_ico);43 File f=list.get(position);44 Txt_Name.setText(f.getName());45 Txt_Size.setText(getFilesSize(f));46 if(f.isDirectory())47 img.setImageBitmap(bmp_folder);48 else49 img.setImageBitmap(bmp_file);50 return v;51 }52 public void scanFiles(String path)53 {54 list.clear();55 File dir=new File(path);56 File[] subFiles=dir.listFiles();57 if(subFiles!=null)58 for(File f:subFiles)59 list.add(f);60 this.notifyDataSetChanged();61 currPath=path;62 }63 public File_Adter(Activity activity)64 {65 this.activity=activity;66 bmp_folder=BitmapFactory.decodeResource(activity.getResources(),R.drawable.folder);//文件夹,decodeResource图片解码,source资源,解码为Bitmap类型;67 bmp_file=BitmapFactory.decodeResource(activity.getResources(),R.drawable.file);//文件68 }69 public static String getFilesSize(File f)70 {71 int sub_index=0;72 String show="";73 if(f.isFile())74 {75 long length=f.length();76 if(length>=1073741824)77 {78 sub_index=String.valueOf((float)length/1073741824).indexOf(".");79 show=((float)length/1073741824+"000").substring(0,sub_index+3)+"GB";80 }81 else if(length>=1048576)82 {83 sub_index=(String.valueOf((float)length/1048576)).indexOf(".");84 show=((float)length/1048576+"000").substring(0,sub_index+3)+"GB";85 }86 else if(length>=1024)87 {88 sub_index=(String.valueOf((float)length/1024)).indexOf(".");89 show=((float)length/1024+"000").substring(0,sub_index+3)+"GB";90 }91 else if(length<1024)92 show=String.valueOf(length)+"B";93 }94 return show;95 }96 }
4.File_listActivity的实现
1 package com.cqvie; 2 3 import java.io.File; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget.AdapterView;10 import android.widget.AdapterView.OnItemClickListener;11 import android.widget.Button;12 import android.widget.ListView;13 import android.widget.TextView;14 15 public class File_listActivity extends Activity implements OnItemClickListener, OnClickListener {16 /** Called when the activity is first created. */17 @Override18 public void onCreate(Bundle savedInstanceState) {19 super.onCreate(savedInstanceState);20 setContentView(R.layout.main);21 22 List_View=(ListView) findViewById(R.id.List_View);23 But_Up=(Button) findViewById(R.id.But_Up);24 Txt_Path=(TextView) findViewById(R.id.Txt_Path);25 File_Adter Adter=new File_Adter(this);26 List_View.setAdapter(Adter);27 List_View.setOnItemClickListener(this);28 Adter.scanFiles("/");29 But_Up.setOnClickListener(this);30 }31 ListView List_View;32 TextView Txt_Path;33 Button But_Up;34 public void onClick(View v) {35 // TODO Auto-generated method stub36 File_Adter ad=(File_Adter) List_View.getAdapter();37 if(ad.currPath.equals("/")) return;38 File f=new File(ad.currPath);39 Txt_Path.setText(f.getParent());40 ad.scanFiles(f.getParent());41 42 }43 public void onItemClick(AdapterView<?> parent, View v, int positiong, long id) {44 // TODO Auto-generated method stub45 File_Adter da=(File_Adter) List_View.getAdapter();46 File f=da.list.get(positiong);47 if(f.isDirectory())48 {49 Txt_Path.setText(f.getPath());50 da.scanFiles(f.getPath());51 }52 }53 }
效果图展示
总结
在做这个File_Adter的时候,需要注意的有三点,一是在新建文件列表类的时候要继承BaseAdapter,并且一定不要勾选主方法。二是要在res\drawable-hdpi中添加用于显示文件和文件夹的图片。三是在item.xml的设计时需把Change Layout中New Layout Type的值设为LinearLayout,这样就方便我们随意放置ImageView和textView的位置,从而有利于软件的美观。第一次做这个显示SD卡中的文件列表时就失败了,后来就不爱去碰它,不爱去解决这个问题。导致这个问题一直没有解决,后来是迫于考试没法就去重新做,才发现其实没有什么问题,一直做下来都很顺畅。这使我明白了可怕的不是问题,而是没有去解决问题的恒心和懒惰的心理。其实有的问题它其实只是很简单的问题只要轻轻松松的就解决了,而不是什么重大的问题。在日常生活和学习中我们应该简单的看待问题。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- Android通过LIstView显示文件列表
- Android通过LIstView显示文件列表
- Android-用ListView显示SDCard文件列表
- Android通过LIstView显示文件列表的两种方法介绍
- 用listview显示文件列表
- android之PopUpWindow显示Listview(文件列表)
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- android开发 列表显示(ListView)
- Android中使用ListView显示列表
- Android采用ListView实现数据列表显示
- android用listView显示文件夹列表
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android学习之ListView显示下拉列表
- Android采用ListView实现数据列表显示 .
- 字符串的左旋转
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- 网桥的原理与作用 .
- JSP详解
- Ubuntu Android GCC 版本配置
- Android通过LIstView显示文件列表
- HDU3785-寻找大富翁
- 经典C、C++、MFC、VC++教程,都是pdf完整版的
- js去掉最后一个逗号
- Emgu CV Lesson 1
- socket编程步骤
- Android HTTP实例 发送请求和接收响应
- 王垠:如何掌握程序语言
- js保留2位小数 3.14159 =3.14