File.list () devuelve los archivos en un orden diferente para 4.0 que 2.2
Si estoy usando Android 2.2 y el File.list()
llamada File.list()
en BookGenerator.java , entonces las páginas y los capítulos vienen en la secuencia exacta, pero cada vez que ejecuto en Android 4.0 me da la lista de páginas inversa o invierta el orden de las páginas.
¿Existe un problema de compatibilidad entre 2.2 y 4.0?
- ¿Cómo se juega streaming en directo en la aplicación android?
- EditText siguiente Teclado del botón
- Cómo manejas la internacionalización para "Tu entrada 'xyz' es excelente!"
- El inicio de Backend para móviles subscribeToCloudMessage no funcionará
- Cerrar sesión Facebook Android SDK
- Estoy tratando de enviar datos con NXJ y Android Bluetooth
- R.java no está generando debido a appcompat v7?
- No se puede escribir en el campo de entrada después de cargar una página con InAppBrowser y la carga del hilador
- Estilo editText para android
- Cómo cargar matriz de cadena en un fragmento?
- "Java.lang.NullPointerException" al intentar instalar Android SDK
- Eclipse, Eliminar / corregir fácilmente @Override debido al cambio de versión de Java
- Facebook amigo recolector muestra SDK no funciona Android
No debe confiar en listFiles () para una lista ordenada de las páginas:
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#listFiles ()
"No hay ninguna garantía de que las cadenas de nombres en la matriz resultante aparecerán en cualquier orden específico;"
Tienes que crear tu propio sistema de pedido, basado en el nombre de archivo o lastModified o el tamaño del archivo. Puede utilizar un Comparador <Archivo> o Comparador <Cadena> para ordenar los archivos en un SortedSet, o como se mencionó anteriormente, crear una propia clase para los elementos que ordenar que implementa Comparable. Yo sugeriría la primera solución, ya que es un poco estúpido para envolver la clase de archivo o cadena en otro sólo para esta funcionalidad.
Un ejemplo con mucha sobrecarga de memoria:
TreeSet<File> pages = new TreeSet<File>(new Comparator<File>(){ public int compare(File first, File second) { return first.getName().compareTo(second.getName()); } }); for (File file : allFiles) { pages.add(file()); } allFiles = pages.toArray();
Si desea una más eficiente, tiene que implementar su propio método para ordenar una matriz en su lugar.
El método list()
no garantiza ningún orden específico para los elementos. La documentación de Android carece de este punto, pero la API oficial de Java SE javadoc advierte sobre ello:
No hay ninguna garantía de que las cadenas de nombres de la matriz resultante aparecerán en cualquier orden específico; No se garantiza, en particular, que aparezcan en orden alfabético.
Debe ordenar la matriz con Collections.sort()
antes de usarla.
File fChapters = new File(internalStorage + bookName + "/Chapters"); // Obtain the chapters file names list (the files in the directory) chapters = fChapters.list(); // Sort the file names according to default alphabetic ordering Collections.sort(chapters) // The chapters list is now sorted from A to Z
Con el sort(List list, Comparator c)
sobrecarga de este método se puede definir cualquier orden que usted necesita. Por ejemplo, ignore el caso de las letras en los títulos:
Collections.sort(chapters, new Comparator<String>() { @Override public int compare(String chapter1, String chapter2) { return chapter1.compareToIgnoreCase(chapter2); } });
Utilice un Comparable para clasificarlo usted mismo.
- Agrupación de datos en un ExpandableListView
- ¿Cómo comprobar si un temporizador todavía está funcionando o no?