第二章:java I/O应用(二)
效果:
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" ><TextView android:id="@+id/mPath" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /><ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"></ListView></LinearLayout>
<?xml version="1.0" encoding="UTF-8"?><TextViewandroid:id="@+id/text1"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="20px"android:textSize="14sp"/>
package i.o.and.listActiviy;import java.io.File;import java.util.ArrayList;import java.util.List;import android.app.AlertDialog;import android.app.ListActivity;import android.content.DialogInterface;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.TextView;public class IOAndListActivity extends ListActivity {private List<String> items=null;private List<String> paths=null;private String rootPath="/";private TextView mPath; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /**载入 main.xml*/ setContentView(R.layout.main); /**通过id找到TextView组件*/ mPath=(TextView)findViewById(R.id.mPath); getFileDir(rootPath); } /**获得文件路径构架*/ public void getFileDir(String filePath){ /**当前路径*/ mPath.setText(filePath); items=new ArrayList<String>(); paths=new ArrayList<String>(); File f=new File(filePath); File[] files=f.listFiles(); if(!filePath.equals(rootPath)){ /**第一条设置为会到目录*/ items.add("返回"+rootPath); paths.add(rootPath); /**返回上一层*/ items.add("返回../"); paths.add(f.getParent()); } /**将文件名字和路径添加到List当中*/ if(files!=null){ for(int i=0;i<files.length;i++){ File file=files[i]; items.add(file.getName()); paths.add(file.getPath()); } } /**使用layout.file_row,items将Adapter设置给ListActivity*/ ArrayAdapter<String> fileList=new ArrayAdapter<String>(this,R.layout.file_row,items); setListAdapter(fileList); } /**设置items被点击的事件*/ protected void onListItemClick(ListView l,View v,int position,long id){ File file=new File(paths.get(position)); if(file.isDirectory()){ /**如果是文件夹就进去*/ getFileDir(paths.get(position)); }else{ /**如果是文件就告诉用户是文件*/ new AlertDialog.Builder(this).setIcon(R.drawable.icon).setTitle("["+file.getName()+"] 是文件!").setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}}).show(); } }}