从Android Java中的文件选择器中的.txt文件中选择和显示文本

时间:2017-11-16 14:59:33

标签: java android

我在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;
}



}

0 个答案:

没有答案