2012-06-22 1 views
-1

저는 Appcelerator Titanium for Android에서 작업하고있는 응용 프로그램에 도움이 필요합니다.Appcelerator/Android : 파일 시스템으로 두 번째 수준의 디렉토리를 나열 할 수 없습니다.

/* 
* 
* Dynamic data, 
* taken from the SD card 
* 
*/ 

//Get the SD card reference 
var dir = Titanium.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory); 

//Get the directory listing 
var directoryStr = dir.getParent().getDirectoryListing(); 

//Convert the listing into an array for display in tableview 
var directoryArr = directoryStr.toString().split(','); 

//Initialize tabledata 
var dirData = []; 

for (var i=0; i < directoryArr.length; i++) { 

     dirData.push({ leftImage:'/images/folder.png', title: directoryArr[i], value: Titanium.Filesystem.externalStorageDirectory + Titanium.Filesystem.separator + directoryArr[i], hasChild:true }); 

     Ti.API.info(Titanium.Filesystem.externalStorageDirectory + directoryArr[i]); 

}; 

    //Table view for directories 
var tableDirs = Ti.UI.createTableView({ 
    data: dirData  
});    

이 출력 :

Data output using the above code

나는 나 에뮬레이터에 첨부 된 SD의 첫 번째 (루트) 수준 (이미지 샘플 다음)를 표시 할 수 있습니다 다음 코드를 가지고

다음 코드는 위의 이미지에서 Images 디렉토리와 같은 디렉토리를 나열하는 문자열을 제공해야합니다.

tableDirs.addEventListener('click', function (e) { 

    if (e.rowData.hasChild) { 


     //Get the SD card reference 
     var secDir = Titanium.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory + '/' + e.rowData.title); 

     //Get the directory listing 
     var secDirStr = secDir.getDirectoryListing(); 

     alert(secDirStr); 


    }; 



}); 

하지만 대신에,이 얻을 :

Unable to understand how to handle that object

나에게 내가 처리하는 방법을 모르는 객체를 돌려줍니다.

 var dir = Titanium.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory + '/Images'); 

디렉토리 목록이 나에게 파일 'deploy.json'를 반환

때때로 나는 다음과 같은 코드를 사용합니다.

모든 포인터가 크게 감사하겠습니다. 나는 안드로이드 개발에 상당히 익숙하다. 그래서 나는 명백한 것을 놓치고 있을지도 모른다.

미리 감사드립니다.

답변

0

getDirectoryListing()은 배열을 반환합니다. 내용을 보려면 배열의 특정 항목을 다음과 같이보아야합니다. secDirStr [0] .toString();

에 대한 루프 아래에 그 내용을 볼 수있는 시도 :

if (e.rowData.hasChild) { 

    //Get the SD card reference 
    var secDir = Titanium.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory + '/' + e.rowData.title); 

    //Get the directory listing 
    var secDirStr = secDir.getDirectoryListing(); 

    for (i=0, max=secDirStr.length; i<max; i++){ 
     alert(secDirStr[i].toString()); 
    } 
};