2013-08-05 7 views
0

에 사용할 파일 이름과 파일의 수정 날짜를 가져 오기 나는 다음과 같은 코드가 수동으로 데이터를 입력 다음 줄을 사용하는 대신 :목록보기

package com.example.customlistview; 

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

import android.os.Bundle; 
import android.os.Environment; 
import android.app.Activity; 
import android.text.format.DateFormat; 
import android.view.Menu; 
import android.widget.ListView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    ArrayList<Contact> imageArry = new ArrayList<Contact>(); 
    ContactImageAdapter adapter; 
    File folder; 
    int j = 0; 
    ArrayList<String> FilesInFolder, FileLastModified; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     folder = new File(Environment.getExternalStorageDirectory() + "/tc/"); 
     FilesInFolder = GetFiles(folder.getAbsolutePath()); 
     //Toast.makeText(this, FilesInFolder.toString(), 2000).show(); 
     for (int i = 0; i < *WHATEVER NUMBER OF FILES*.length(); i++) { 
      // 
      //imageArry.add(new Contact(R.drawable.ic_launcher, FILENAME(FROM GETFILES()), FILEMODIFIED DATE(FROM GETFILELM()))); 
     } 
     Toast.makeText(this, Integer.toString(j), 2000).show(); 
     // add image and text in arraylist 
     imageArry.add(new Contact(R.drawable.ic_launcher, "FaceBook", "8/2/2013")); // take this out 
     imageArry.add(new Contact(R.drawable.ic_launcher, "Google", "8/2/2013")); // take this out 
     // add data in contact image adapter 
     adapter = new ContactImageAdapter(this, R.layout.list, imageArry); 
     ListView dataList = (ListView) findViewById(R.id.list); 
     dataList.setAdapter(adapter); 
    } 

    public ArrayList<String> GetFiles(String DirectoryPath) { 
     ArrayList<String> MyFiles = new ArrayList<String>(); 
     File f = new File(DirectoryPath); 

     //f.mkdirs(); 
     File[] files = f.listFiles(); 
     if (files.length == 0) 
      return null; 
     else { 
      for (int i=0; i<files.length; i++) { 
       if (files[i].getName().endsWith(".tol")) { 
        long lastTime = files[i].lastModified(); 
        String fileName = files[i].getName().substring(0, files[i].getName().lastIndexOf(".")); 
        MyFiles.add(fileName); //MyFiles.add(files[i].getName()); if extension is also needed 
       } 
      } 
     } 

     return MyFiles; 
    } 
    public ArrayList<String> GetFileLM(String DirectoryPath) { 
     ArrayList<String> MyFiles = new ArrayList<String>(); 
     File f = new File(DirectoryPath); 

     //f.mkdirs(); 
     File[] files = f.listFiles(); 
     if (files.length == 0) 
      return null; 
     else { 
      for (int i=0; i<files.length; i++) { 
       if (files[i].getName().endsWith(".tol")) { 
        long lastTime = files[i].lastModified(); 
        String dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString(); 
        MyFiles.add(dateString); 
       } 
      } 
     } 

     return MyFiles; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

난 그냥 다음 줄에 대한 도움이 필요

imageArry.add(new Contact(R.drawable.ic_launcher, "FaceBook", "8/2/2013")); // take this out 

나는 다음과 달성하고자하는 :

for (int i = 0; i < *number of files in the folder*.length(); i++) { 
    // 
    //imageArry.add(new Contact(R.drawable.ic_launcher, FILENAME(FROM GETFILES()), FILE MODIFIED DATE(FROM GETFILELM()))); 
} 

R을 FileName()"8/2/2013"GetFileLM()을 입력하고 루프를 사용하면 tc에서 사용할 수있는 많은 파일을 imageArry.add();에서 사용할 수 있습니다.

답변

0

ArrayList 대신 Hasmap을 사용해보십시오.

public class MainActivity extends Activity { 
    ArrayList<Contact> imageArry = new ArrayList<Contact>(); 
    ContactImageAdapter adapter; 
    File folder; 
    int j = 0; 
    Hashmap<String,String> FilesInFolder; //Filename:ModificationDate pairs 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     folder = new File(Environment.getExternalStorageDirectory() + "/tc/"); 
     FilesInFolder = GetFilesData(folder.getAbsolutePath()); 

     for (Map.Entry<String, String> current_file:FilesInFolder.entrySet()) { 
      // 


      imageArry.add(new Contact(R.drawable.ic_launcher, current_file.getKey(), current_file.getValue())); 
     } 

     adapter = new ContactImageAdapter(this, R.layout.list, imageArry); 
     ListView dataList = (ListView) findViewById(R.id.list); 
     dataList.setAdapter(adapter); 
    } 

    public HashMap<String,String> GetFilesData(String DirectoryPath) { 
     HashMap<String,String> MyFiles = new HashMap<String,String>(); 
     File f = new File(DirectoryPath); 


     File[] files = f.listFiles(); 
     if (files.length == 0) 
      return null; 
     else { 
      for (int i=0; i<files.length; i++) { 
       if (files[i].getName().endsWith(".tol")) { 
        long lastTime = files[i].lastModified(); 
        String fileName = files[i].getName().substring(0, files[i].getName().lastIndexOf(".")); 

        String dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString(); 
        MyFiles.put(fileName,dateString); //Add the new filename and its modification date to the Hasmap 
       } 
      } 
     } 

     return MyFiles; 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

코드 테스트를 거치지 않았습니다. 사소한 변경이 필요할 수 있습니다. HashMap &지도 클래스를 가져와야합니다.

+0

나는 코드 주위를 비틀어서 작동 시켰습니다 ... 와우 !!! 감사! –

+0

완료 : 다른 도움을받을 수 있습니까? GetFolder 함수가 변경되었으므로 더 이상 사용할 수 없습니다. –

+0

제발 채팅에 가자 http://chat.stackoverflow.com/rooms/info/34882/showing-file-details-on-list-view –