Intereting Posts
Волейбол в предпросмотре разработчика Android M: org.apache.http не может быть разрешен GetSupportFragmentManager (). GetFragments () показывает ошибку времени компиляции Facebook AppInviteContent: SDK не был инициализирован, обязательно вызовите функцию FacebookSdk.sdkInitialize () Как добавить значок в диалоговом окне предупреждения перед каждым элементом? Как создать динамически пронумерованные указатели на MapView? Как отправить запрос реферера в URL-адрес для webView Перекрытие позиций / просмотров в recyclerview Как создать пользовательский счетчик, как рамка вокруг спиннера с треугольником вниз с правой стороны? OnActivityResult не вызывает и фрагмент закрывает себя от выбора изображений Android ActionBarSherlock Значок товара странная ширина с Android 4.3 Как обновить базу данных мультимедиа Android Android, как включить, не беспокоить (dnd) программно Загрузка изображения с Android (с Android Asynchronous Http Client) на сервер rails (с помощью paperclip) Экспорт друзей друзей друзей по электронной почте Android ANDROID – определение цвета с использованием openCV – как?

Как отображать файлы на SD-карте в ListView?

Я хотел бы создать кнопку, которая при нажатии будет идти в класс, который отображает все медиафайлы с SD-карты с помощью ListView .

После выбора из списка он вернет имя файла, выбранное в основной класс. Если возвращенный файл является файлом изображения, он будет отображаться в ImageView и если возвращаемый файл является аудио-файлом, он просто отобразит значок.

Добавьте метод GetFiles() в вашу программу. Позвоните, чтобы получить ArrayList<> всех файлов. Затем вы можете использовать его для заполнения listview . Вам нужно предоставить аргумент String DirectoryPath .

Функция:

 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++) MyFiles.add(files[i].getName()); } return MyFiles; } 

Пример использования:

 @Override public void onCreate() { // Other Code ListView lv; ArrayList<String> FilesInFolder = GetFiles("/sdcard/somefolder"); lv = (ListView)findViewById(R.id.filelist); lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, FilesInFolder)); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // Clicking on items } }); } 

Убедитесь, что внешнее хранилище доступно для чтения: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

Чтобы фильтровать файлы на основе имени / расширения: как получить доступ к SD-карте и возврату и массив с файлами вне определенного формата?

Сначала я настоятельно рекомендую вам сначала прочитать некоторые уроки об андроиде, чтобы вы получили основы. Для этого вам необходимо выполнить следующие действия:

  1. Список всех медиафайлов – Как перечислить все носители в Android?
  2. Начать новую активность
  3. Android: захват возврата активности
 File mfile=new File("/sdcard"); File[] list=mfile.listFiles(); System.out.println("list"+mfile.listFiles().length); for(int i=0;i<mfile.listFiles().length;i++) { if(list[i].isHidden()) } System.out.println("hidden path files.."+list[i].getAbsolutePath()); } } 

Может это поможет !!!

 public class FileActivity extends ListActivity { String str; ArrayList<String> al; ArrayAdapter<String> adapter; ListView lv; @SuppressLint("SdCardPath") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.file_view); Intent int1=getIntent(); ArrayList<String> arr1=GetFiles(Environment.getExternalStorageDirectory().getPath()); adapter= new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_expandable_list_item_1,arr1); lv = (ListView) findViewById(android.R.id.list); lv.setAdapter(adapter); } private ArrayList<String> GetFiles(String path) { ArrayList<String> arr2=new ArrayList<String>(); File file=new File(path); File[] allfiles=file.listFiles(); if(allfiles.length==0) { return null; } else { for(int i=0;i<allfiles.length;i++) { arr2.add(allfiles[i].getName()); } } return arr2; } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); } 

Обновленная функция :: используйте это для нового apis

Вызовите функцию следующим образом:

  searchForFileInExternalStorage("filename.ext"); 

@реализация

  public File searchForFileInExternalStorage(String filename) { File storage = Environment.getExternalStorageDirectory(); return searchForFileInFolder(filename, storage); } public File searchForFileInFolder(String filename, File folder) { File[] children = folder.listFiles(); File result; for (File child : children) { if (child.isDirectory()) { result = searchForFileInFolder(filename, child); if (result != null) { return result; } } else { // replace equals by equalsIgnoreCase if you want to ignore the // case of the file name if (child.getName().equals(filename)) { return child; } } } return null; } 

Это правильное решение для вас! Или я даю вам ссылку на этот материал!

 public class SongsManager { // SDCard Path //choose your path for me i choose sdcard final String MEDIA_PATH = new String("/sdcard/"); private ArrayList<hashmap<string, string="">> songsList = new ArrayList<hashmap<string, string="">>(); // Constructor public SongsManager(){ } /** * Function to read all mp3 files from sdcard * and store the details in ArrayList * */ public ArrayList<hashmap<string, string="">> getPlayList(){ File home = new File(MEDIA_PATH); if (home.listFiles(new FileExtensionFilter()).length > 0) { for (File file : home.listFiles(new FileExtensionFilter())) { HashMap<string, string=""> song = new HashMap<string, string="">(); song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4))); song.put("songPath", file.getPath()); // Adding each song to SongList songsList.add(song); } } // return songs list array return songsList; } /** * Class to filter files which are having .mp3 extension * */ //you can choose the filter for me i put .mp3 class FileExtensionFilter implements FilenameFilter { public boolean accept(File dir, String name) { return (name.endsWith(".mp3") || name.endsWith(".MP3")); } } }