我在ListActivity中创建了一个文件选择器,它列出并允许您在我的设备的内部存储器中的TravelLogs目录中选择一个文件。
目标: 我希望在textView中从我的文件选择器中选择的.txt文件中显示文本,从activity_list.xml文件中的dispText中显示。
有任何建议或资源吗?我已经完成了关于这个主题的每个教程,并且必须是误解。
从Nov27 @ 1226pm pst
更新到最新代码public class ListActivity extends AppCompatActivity {
TextView dispText;
Button buttonOpenDialog;
TextView textFolder;
String KEY_TEXTPSS = "TEXTPSS";
static final int CUSTOM_DIALOG_ID = 0;
ListView dialog_ListView;
File root;
File curFolder;
private List<String> fileList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
buttonOpenDialog = (Button) findViewById(R.id.opendialog);
buttonOpenDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(CUSTOM_DIALOG_ID);
}
});
root = new File(Environment.getExternalStorageDirectory(), "TravelLogs");
curFolder = root;
dispText = (TextView) findViewById(R.id.text_file_data);
}
public String getTextFileData(String fileName) {
StringBuilder text = new StringBuilder();
Log.d("jason", "fileName: " + fileName );
try {
FileInputStream fIS = new FileInputStream(fileName);
InputStreamReader isr = new InputStreamReader(fIS, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
text.append(line + '\n');
}
br.close();
} catch (IOException e) {
text.append("IOException: " + e.getMessage() + "\n");
Log.e("Error!", "Error occured while reading text file from Internal Storage!");
}
return text.toString();
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case CUSTOM_DIALOG_ID:
dialog = new Dialog(ListActivity.this);
dialog.setContentView(R.layout.dialoglayout);
dialog.setTitle("Select Log");
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
textFolder = (TextView) dialog.findViewById(R.id.folder);
dialog_ListView = (ListView) dialog.findViewById(R.id.dialoglist);
dialog_ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("jason", "fileName: " + fileName );
File selected = new File(fileList.get(position));
if(selected.isDirectory()) {
ListDir(selected);
} else {
Toast.makeText(ListActivity.this, selected.toString() + " selected",
Toast.LENGTH_LONG).show();
dismissDialog(CUSTOM_DIALOG_ID);
String text = getTextFileData(selected.getAbsolutePath());
Toast.makeText(ListActivity.this, text.toString() + " line",
Toast.LENGTH_LONG).show();
}
}
});
break;
}
return dialog;
}
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
switch (id) {
case CUSTOM_DIALOG_ID:
ListDir(curFolder);
break;
}
}
void ListDir(File f) {
curFolder = f;
textFolder.setText(f.getPath());
File[] files = f.listFiles();
fileList.clear();
for(File file : files) {
fileList.add(file.getPath());
}
ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, fileList);
dialog_ListView.setAdapter(directoryList);
}
@Override
public void onBackPressed()
{
super.onBackPressed();
startActivity(new Intent(ListActivity.this, MainActivity.class));
finish();
}
@Override
public boolean onSupportNavigateUp(){
startActivity(new Intent(ListActivity.this, MainActivity.class));
finish();
return true;
}
}