Замените
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle("Single Choice List")
.setSingleChoiceItems(files, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectionID = which;
}
})
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//display the content of the selected file
displayContent();
Toast.makeText(View_Records.this, "You selected " + files[selectionID], Toast.LENGTH_SHORT).show();
}
})
вызовом другого Activity
(startActivityForResult()
) на стиль dialog
, где вы выберете File
и вернете его путь с помощью Intent
, а затем внутри onActivityResult()
вы просто используете его, чтобы открыть File
, а затем отобразить его содержимое внутри TextView
.
В противном случае вы можете попробовать сначала использовать create()
и добавить onDismissListener()
. Примерно так:
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
// do you things with builder
AlertDialog ad = builder.create();
ad.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
// here you open file, read content and put it inside TextView`
}
});
ad.show()
Я не уверен, но это должно работать с AlertDialog
без создания Activity
для этого.
Это для получения всех файлов из каталога :
public static ArrayList<File> listFiles(File folder) {
if (folder.isDirectory()) {
ArrayList<File> tempList = new ArrayList<>();
File[] files = folder.listFiles();
for (File inFile : files) {
if (!inFile.isDirectory()) {
tempList.add(inFile);
}
}
/*Collections.sort(tempList, new Comparator<File>() { //you can sort by name
@Override
public int compare(File file1, File file2) {
return file1.getName().compareTo(file2.getName());
}
});*/
return tempList;
}
return null;
}
А вы просто отправляете myFilesDirectory
в качестве параметра. Также вы можете пропустить проверку if(!inFile.isDirectory())
, если вы на 100% уверены, что все файлы являются файлами, а не каталогами, и вернуть Array
. И затем вы просто получаете свой файл, используя list.get(selectionID)
или array[selectionID]
в зависимости от того, что вы собираетесь вернуть из метода.
Также метод не обязательно должен быть static
. У меня есть static
для нужд проекта.