file_list.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TextView>
使用 ArrayAdapter就能讓ListView列出List
ArrayAdapter
ad=new ArrayAdapter
list_view.setAdapter(ad);
ListView事件傾聽(實做ListView.OnItemClickListener)讓選中list item回應事件
public class clockConfigure extends Activity implements RadioGroup.OnCheckedChangeListener,ListView.OnItemClickListener{...}
list_view=(ListView)findViewById(R.id.listView1);
// list_view.setOnClickListener(this);
//設定list_view傾聽事件
list_view.setOnItemClickListener(this);
//實做(implements ListView.OnItemClickListener完後,在esclipe視窗中按右鍵source,Override/implements method會自動載入)
@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
//上一層
String st;
String select;
//當前檔案
select=CLOCK1_widget1_music_file.get_file_path()+"/"+CLOCK1_widget1_music_file.get_file(arg2);
//當前檔案
Log.d("TAG new path file",select);
Log.d("TAG path ",CLOCK1_widget1_music_file.get_file_path());
ad=new ArrayAdapter
list_view.setAdapter(ad);
}
接下來是重點CLOCK1_widget1_music_file.java這個來處理檔案list,getParent()這函式可取得,當前目錄或file的PATH(譬如/mnt/sdcard,就得到/mnt,在一次就變/),判斷當給一個路徑是directory或要回上一層,傳回file list
在此使用 List
package test.Clock_widget1;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class CLOCK1_widget1_music_file {
private static File myFilePath;
private static List
private static String filepath;
public CLOCK1_widget1_music_file(String path) {
}
//給路徑,取得all file list,給目錄或回上一層使用
public static List
myFilePath = new File(path);
filepath=path;
//必須初始化array,否則error
dirarray=new ArrayList
//加上第一項
dirarray.add("回到上一層");
//是目錄回傳list
if(myFilePath.isDirectory()){
for(int j=0;j
dirarray.add( myFilePath.list()[j]);
//Log.d("TAG F:",dirarray[j]);
}
}else{
//不是目錄回到上一層
//先回到當前目錄
filepath=myFilePath.getParent();
File f=new File(filepath);
//在一次就是上層目錄,但是若是根目錄除外
if(!filepath.equals("/")){
filepath=f.getParent();
}
myFilePath = new File(filepath );
for(int j=0;j
dirarray.add( myFilePath.list()[j]);
//Log.d("TAG F:",dirarray[j]);
}
}
return dirarray;
}
//當前路徑
public static String get_file_path(){
return filepath;
}
//選中file
public static String get_file(int i){
return dirarray.get(i);
}
public static boolean is_directory(String st){
File myFilePath = new File(st);
return myFilePath.isDirectory();
}
public static boolean is_file(String st){
File myFilePath = new File(st);
return myFilePath.isFile();
}
}
沒有留言:
張貼留言