我已经在堆栈上查看了类似的问题,并且找不到我在路上遇到的特定问题的答案是不成功的.我会捐给任何可以给我解决方案的人.
我试图从没有扩展名的外部存储目录显示内容(.txt文件).我已导入(apache.commons.io).
ArrayAdapter mArrayAdapter;
ListView listView;
String fileNames[];
ArrayList<String> nameArray;
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
this.setContentView(R.layout.activity_read_note_menu);
listView = (ListView) this.findViewById(R.id.readListView);
fileNames = new File(String.valueOf(Environment.getExternalStorageDirectory().getAbsolutePath()) + "/Notes").list();
nameArray = new ArrayList<>();
for (String name: fileNames){
name = name.substring(0, name.indexOf("."));
nameArray.add(name);
Log.d("Files", "FileName:" + name);
}
mArrayAdapter = new ArrayAdapter<>(this, R.layout.list_item_1, nameArray);
mArrayAdapter.sort(new Comparator<String>() {
public int compare(String li1, String li2) {
return li1.compareto(li2);
}
});
listView.setAdapter(mArrayAdapter);
listView.setonItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView adapterView, View view, int i, long l) {
String string = (String) listView.getItemAtPosition(i);
Intent intent = new Intent(ReadNoteMenu.this, ReadNote.class);
intent.putExtra(EXTRA_MESSAGE, string);
ReadNoteMenu.this.startActivity(intent);
finish();
}
});
解决方法:
String fileNames[] = new File(String.valueOf(Environment.getExternalStorageDirectory().getAbsolutePath()) + "/Notes").list();
获得所有文件列表后,从文件名中删除扩展名并将该名称存储在数组中.
ArrayList<String> nameArray = new ArrayList<String>();
for (String name: fileNames){
name = name.substring(0, name.indexOf("."));
nameArray.add(name);
Log.d("Files", "FileName:" + name);
}
请在适配器中传递nameArray以完成任务,如下所示:
mArrayAdapter = new ArrayAdapter(this, R.layout.list_item_1, nameArray);