SDCard文件列表布局的设计

计应111   杜勇

   SDCard文件列表设计属于layout页面布局中的一个典型。其中我们要修改一个布局的文件:main.xml。

将下方的LinerLayout布局代码修改如下:

   <LinearLayout android:layout_below="@id/toolbar"

android:layout_width="fill_parent"

 

android:layout_height="fill_parent"

android:id="@+id/contentView">

<ListView android:id="@android:id/list"//这一句为其中的重点,他继承自android.app.listactivity.并且在访问的时候,必须访问:android.R.id.List  android:layout_width="fill_parent"

 

  android:layout_height="wrap_content"

  android:longClickable="true"/>

</LinearLayout>

 其程序编写的代码如下:

1.

 

public class FileListViewActivity extends Activity implements OnItemClickListener, OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getObjFromID();
       
        FileListAdapter da=new FileListAdapter(this);
        lv.setAdapter(da);
        lv.setOnItemClickListener(this);
        da.scanFiles("/");
       
        btnUp.setOnClickListener(this);
    }
    ListView lv;
    TextView t1;
    Button btnUp;
   
    void getObjFromID()
    {
        t1=(TextView) findViewById(R.id.t1);
        lv=(ListView) findViewById(R.id.listView1);
     btnUp=(Button) findViewById(R.id.btnUp);
    }
   
 @Override
 public void onItemClick(AdapterView<?> parent, View view,
   int position,long id) {
  FileListAdapter da= (FileListAdapter) lv.getAdapter();
  File f= da.list.get(position);
  if(f.isDirectory())
  {
   t1.setText(f.getPath());
   da.scanFiles(f.getPath());
  }
 }

 

 @Override
 public void onClick(View v) {
  
  FileListAdapter da= (FileListAdapter) lv.getAdapter();
  if(da.currPath.equals("/")) return;
  File f=new File(da.currPath);
  t1.setText(f.getParent());
  da.scanFiles(f.getParent());
  
 }
}

 

2.

 

public class FileListAdapter extends BaseAdapter {

 

 public Activity activity; //创建View时必须要提供Context
 public List<File> list=new LinkedList<File>(); //数据源
 public String currPath;
 
 public FileListAdapter(Activity activity) {
  this.activity = activity;
 }

 

 public void scanFiles(String path)
 {
  list.clear();
  File dir=new File(path);
  File[] subFiles=dir.listFiles();
  if(subFiles!=null)
   for(File f:subFiles)
    list.add(f);
  this.notifyDataSetChanged();
  currPath=path;
 }
 
 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return list.size();
 }

 

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return null;
 }

 

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return position;
 }

 

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  
  View v=View.inflate(activity, R.layout.item, null);
  TextView txtName= (TextView) v.findViewById(R.id.txtName);
  ImageView imgIcon=(ImageView) v.findViewById(R.id.imgIcon);
  File f=list.get(position);
  txtName.setText(f.getName());
  Bitmap bmp_folder=BitmapFactory.decodeResource(
    activity.getResources(),R.drawable.folder);
  Bitmap bmp_file=BitmapFactory.decodeResource(
    activity.getResources(),R.drawable.file);
  if(f.isDirectory())
   imgIcon.setImageBitmap(bmp_folder);
  else
   imgIcon.setImageBitmap(bmp_file);
  return v;
 }

 

}

 

3.

 

public class FileBean implements Comparator<Object>{

 

 private File file; // 文件
 private Bitmap icon;// 文件图标
 private String name;// 文件名
 private String path;// 文件路径
 private String size;// 文件大小
 private String type;// 文件类型

 

 public File getFile() {
  return file;
 }

 

 public void setFile(File file) {
  this.file = file;
 }

 

 public Bitmap getIcon() {
  return icon;
 }

 

 public void setIcon(Bitmap icon) {
  this.icon = icon;
 }

 

 public String getName() {
  return name;
 }

 

 public void setName(String name) {
  this.name = name;
 }

 

 public String getPath() {
  return path;
 }

 

 public void setPath(String path) {
  this.path = path;
 }

 

 public String getFileSize() {
  return size;
 }

 

 public void setFileSize(String fileSize) {
  this.size = fileSize;
 }

 

 public String getFileStyle() {
  return type;
 }

 

 public void setFileStyle(String style) {
  this.type = style;
 }

 

 @Override
 public int compare(Object object1, Object object2) {
  FileBean file1 = (FileBean)object1;
  FileBean file2 = (FileBean)object2;
  return file1.getName().compareToIgnoreCase(file2.getName());
 }
}

   运行程序效果如图所示:

 

 

  此处程序已经完结。从这次的程序编写中,遇到了许多许多的问题,很多错误。不能在很短的时间之内解决掉,于是在百度搜索都搜索了很久,看了一些例题之后,才算是勉强解决了这些问题。就如同我们学校的万青老师所言:我们学习的过程中不能只是一味的去做,要想做一个优秀的程序员,我们更加应该多练习语言表达的能力,不然,连这么去百度搜索但你都不知道,只能是停留在一个初级编程员的水平,永远达不到经理的程度。所以我们想要往上走,那就必须要锻炼自己的口语交际,使得自己成为一根能够无限上升的人,就算说错了也没关系,俗话说得好:'只要你敢想,世界就是你的。”然而从中我们也应该学到努力和坚持不懈的精神,这也是成功的关键所在。

 

posted @ 2013-05-13 15:41  什么都不必说  阅读(183)  评论(0编辑  收藏  举报