Ich mache eine Anwendung für Android und etwas, das ich brauche, ist, dass es eine Liste aller Dateien und Verzeichnisse auf der SD-Karte und zeigt Es muss in der Lage sein, sich durch die verschiedenen Verzeichnisse zu bewegen. Ich habe a good tutorial in anddev gefunden. Ich habe ein paar Dinge geändert, also bewegt sich die Anwendung auf der SD-Karte und nicht in Android-Root-Verzeichnissen, aber der Rest ist meistens derselbe.Logcat Fehler: "AddView (Ansicht, LayoutParams) wird in AdapterView nicht unterstützt" in einem ListView
Dies ist meine XML-Datei für die Aktivität:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</ListView>
Und dies ist der Code für die Aktivität:
import hackreatorz.cifrador.R;
import java.io.File;
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ArchivosSD extends ListActivity {
private ArrayList<String> directoryEntries = new ArrayList<String>();
private File currentDirectory = new File("/sdcard/");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
browseToSD();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
private void browseToSD() {
browseTo(new File("/sdcard/"));
}
private void upOneLevel() {
if(this.currentDirectory.getParent() != null)
this.browseTo(this.currentDirectory.getParentFile());
}
private void browseTo(final File directory) {
if (directory.isDirectory()) {
this.currentDirectory = directory;
fill(directory.listFiles());
} else {
Toast.makeText(ArchivosSD.this, this.directoryEntries.get(this.getSelectedItemPosition()), Toast.LENGTH_SHORT).show();
}
}
private void fill(File[] files) {
this.directoryEntries.clear();
this.directoryEntries.add(getString(R.string.current_dir));
if(this.currentDirectory.getParent() != null)
this.directoryEntries.add(getString(R.string.up_one_level));
int currentPathStringLength = (int) this.currentDirectory.getAbsoluteFile().length();
for (File file : files) {
this.directoryEntries.add(file.getAbsolutePath().substring(currentPathStringLength));
}
setListAdapter(new ArrayAdapter<String>(this, R.layout.archivos_sd, this.directoryEntries));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
int selectionRowID = (int) this.getSelectedItemPosition();
String selectedFileString = this.directoryEntries.get(selectionRowID);
if (selectedFileString.equals(".")) {
this.browseToSD();
} else if(selectedFileString.equals("..")) {
this.upOneLevel();
} else {
File clickedFile = null;
clickedFile = new File(this.currentDirectory.getAbsolutePath() + this.directoryEntries.get(selectionRowID));
if(clickedFile != null)
this.browseTo(clickedFile);
}
}
}
Ich bekomme keine Fehler in Eclipse, aber ich bekomme ein Erzwinge Schließen beim Ausführen der Anwendung auf meinem Telefon und wenn ich Logcat ansehe, sehe ich folgendes:
01-01 23: 30: 29.858: FEHLER/AndroidRuntime (14911): FATALE AUSNAHME: main 01-01 23: 30: 29,858: ERROR/Android Runtime (14911): java.lang.UnsupportedOperationException: addView (Ansicht, LayoutParams) nicht
in AdapterView unterstütztIch habe keine Ahnung, was zu tu, ich habe in Google nachgeschaut und habe nichts gefunden und das gleiche habe ich bei stackoverflow gemacht. Dies ist meine erste Anwendung in Java und für Android, also bin ich ein echtes n00b und wenn die Antwort da war, habe ich es nicht verstanden, also würde ich es wirklich schätzen, wenn Sie erklären könnten, was ich tun sollte, um diesen Fehler zu beheben und warum.
Vielen Dank für alles im Voraus.
Großartig! Es funktioniert, vielen Dank! Ich zweifle an Ihrer Antwort, was beinhaltet "android.R.layout.simple_list_item_1"? Wenn ich "android.R.layout.simple_list_item_1" verwende, was passiert mit dem Layout, das ich mit einer Listview und einer Textansicht gemacht habe? Danke vielmals! –
Wenn Sie einen ArrayAdapter erstellen, übergeben Sie eine Layout-Ressource, die für jedes Listenelement verwendet werden soll (und ArrayAdapter benötigt nur eine TextView). Die Layout-Datei, in der Sie den "Bildschirm" einrichten, soll in onCreate mit setContentView (R.layout.Ihr_layout) verwendet werden. –
Could I "android.R.layout.simple_list_item_1" zu R.layout.myxml ändern, wenn die XML-Datei den folgenden Code hat ?: Xml version = "1.0" encoding = "utf-8"?> \t –