android中ListActivity的使用

ListActivity的使用
ListActivity非常有用,本人学习了好长时间才稍有了解,首先谢谢各位网友的分享,从中学到了很多。现在把自己所学也发一下下。
在使用ListActivity时可以不设置setContentView();

private String []cities = {"Hangzhou","Xuzhou","Suzhou","ShangHai"};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.main);
       
        ArrayAdapter adapter = new ArrayAdapter(
        this,
        android.R.layout.simple_list_item_1,//①
        cities
        );
       
        this.setListAdapter(adapter);
}

注意①出,这里是行的样式,为系统自定意得,我们可以自己修改。下面做一个简单的文件管理的例子。代码先贴上,实例可以到下面下载。



package com.test.activity;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;

import com.test.adapter.FileArrayAdapter;

public class ListSDCardActivity extends ListActivity {
    /** Called when the activity is first created. */

//声明设配器
private FileArrayAdapter adapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.main);
       
        //显示根目录下的文件和文件夹
        String rootPath = "/";
        File rootFile = new File(rootPath);
        //得到当前目录的所有文件
        List<File> listFiles = listFiles(rootFile);
        //显示界面
        showActivity(listFiles);
    }
   
    @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    //获得被点击项所代表的File对象
    File file = adapter.getItem(position);
    if(file.isDirectory()){
    List<File> files = listFiles(file);
    if(files != null){
    adapter = new FileArrayAdapter(this, R.layout.row,files);
        this.setListAdapter(adapter);
    }
    }
super.onListItemClick(l, v, position, id);
}
   
   
    //显示设置
private void showActivity(List<File> listFiles) {
adapter = new FileArrayAdapter(this, R.layout.row, listFiles);
       
        this.setListAdapter(adapter);
}

    /**
     * 显示当前目录下的所有文件以及目录
     * @param currentFile
     * @return
     */
private List<File> listFiles(File currentFile) {
List<File> listFiles = null;
//得到文件的数组
File files[] = currentFile.listFiles();

if(files != null){
listFiles = new ArrayList<File>();
//将当前目录名加入
listFiles.add(currentFile);
//将currentFile的父目录加入listFiles
if(currentFile.getParent() != null)
listFiles.add(currentFile.getParentFile());

        //将files[]加入到listFiles[]中
        for(File f : files){
        listFiles.add(f);
        }
}
return listFiles;
}





}




package com.test.adapter;

import java.io.File;
import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class FileArrayAdapter extends ArrayAdapter<File> {

public FileArrayAdapter(Context context, int resource,
List<File> objects) {
super(context, resource, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);

/**
* T getItem(); 他返回的是Adapter中传入的类型
*/
File file = this.getItem(position); //获得当前的  文件对象 ???????????????
//设置View的内容
if(position == 0){
System.out.println(file.getName());
view.setText("当前目录:" + file.getAbsolutePath());
}else if(position == 1 && !isRoot(file)){
view.setText("父目录:" + file.getAbsolutePath());
}else{
if(file.isDirectory()){
view.setText("+\t" + file.getName());
}else{
view.setText("-\t" + file.getName());
}
}

return view;
}

private boolean isRoot(File file){
return getItem(0).getParent() == null;
}

}

你可能感兴趣的:(android,F#,OS)