j'ai essayé de faire un fichier choisir suivant le lien ci-dessous http://www.dreamincode.net/forums/topic/190013-creating-simple-file-chooser/Une erreur au sujet listview
Cependant, je suis l'erreur « Votre contenu doit avoir un ListView dont l'attribut id est « android.R.id.list » "
J'ai googlé l'erreur et j'ai besoin d'obtenir une balise listview dans le fichier xml. Cependant, l'exemple ci-dessus ne l'a pas et il semble bien fonctionner.
Bien que je ne déclenche pas le sélecteur de fichiers dans la page principale, je pense que mon code n'a pas beaucoup de différences. Pourriez-vous m'aider à voir s'il y a des moyens de résoudre ce problème, s'il vous plaît?
file_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/fd_text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:textStyle="bold" android:layout_marginTop="5dip"></TextView>
<TextView android:id="@+id/fd_text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip"></TextView>
</LinearLayout>
filechooser.java
public class filechooser extends ListActivity{
private fileArrayAdapter adapter;
private File curDir;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.file_view);
curDir = new File("/sdcard/");
fill(curDir);
}
public void fill(File f){
File[] dirs = f.listFiles();
this.setTitle("Current Dir: "+f.getName());
List<fc_option>dir = new ArrayList<fc_option>();
List<fc_option>fls = new ArrayList<fc_option>();
try{
for (File ff: dirs){
if (ff.isDirectory())
dir.add(new fc_option(ff.getName(), "Folder", ff.getAbsolutePath()));
else
fls.add(new fc_option(ff.getName(), "File Size: " + ff.length(), ff.getAbsolutePath()));
}
}catch (Exception e){
}
Collections.sort(dir);
Collections.sort(fls);
dir.addAll(fls);
if (!f.getName().equalsIgnoreCase("sdcard"))
dir.add(0,new fc_option("..","Parent Directory", f.getParent()));
adapter = new fileArrayAdapter(this, R.layout.file_view, dir); //get problems
this.setListAdapter(adapter);
}
//@Override
protected void onListItemClick(ListView l, View v, int position, long id){
super.onListItemClick(l,v,position, id);
fc_option o = adapter.getItem(position);
if (o.getData().equalsIgnoreCase("folder") || o.getData().equalsIgnoreCase("parent directory")){
curDir = new File(o.getPath());
fill(curDir);
}else{
onFileClick(o);
}
}
private void onFileClick(fc_option o){
Toast.makeText(this,"File Click"+o.getName(), Toast.LENGTH_SHORT).show();
}
}
le fileArrayAdapter est exactement le même que le lien.
Merci pour votre aide
Non, ce n'est pas le fichier de disposition pour les articles seulement. Comme il est défini par setContentView, il définit l'ensemble de la mise en page. – Mudassir
Dans l'article que vous avez lié, il n'y a pas setContentView dans OnCreate de ListActivity. L'auteur utilise file_view.xml comme la disposition de chaque élément individuel et non comme la disposition de la liste. – kgiannakakis