Android文件查看与读取(一)
来源:互联网 发布:mac桌面显示时间 编辑:程序博客网 时间:2024/06/06 01:45
Android 文件查看与读取(一)
请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客)
查看指定文件路径下的文件列表,选择某文件并读取该文件内容。其中用到的xml控件有:ListView、Button…
1、创建选择文件夹的布局文件(activity_selectfloder.xml)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".SelectFloderActivity" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" > <ListView android:id="@+id/listView" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" > </ListView></LinearLayout></RelativeLayout>
2、创建选择文件的布局文件(activity_selectfile)
a) 比起上一个布局文件,该文件只多了4个Button,4个Button分别加上android:layout_weight="1",以保证4个Button权重一致并均匀占满整个父空间。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".SelectFloderActivity" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"> <Button android:id="@+id/AllCheck_Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="全选" /> <Button android:id="@+id/InvertCheck_Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="反选" /> <Button android:id="@+id/CancalCheck_Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="取消" /> <Button android:id="@+id/OK_Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="确定" /> </LinearLayout> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" > </ListView> </LinearLayout> </RelativeLayout>
3、创建查看文件夹类(SelectFloderActivity)
a) 首先将ListView控件实例化
b) 新建数组适配器,指定适配器样式为android.R.layout.simple_list_item_1
c) 新建文件File mFolder,传入参数Environment.getExternalStorageDirectory()和”xx”,得到SD外部文件的根目录下的”xx”的文件对象mFolder。
d) 新建文件数组,由mFolder.listFiles()函数得到mFolder文件下的文件列表
e) 将该文件列表下的文件一一添加到适配器上
f) 将适配器加载到ListView上
g) 最后设置ListView的点击事件。点击事件触发时,将跳转到SelectFileActivity,并且将选择的文件对象传递过去。由于这次传递的是个对象,所以我们借用android.os.Bundle对象封装数据的能力,调用Bundle.putSerializable(…,…)函数
package com.example.engineering7.Activity;import java.io.File; import com.example.engineering7.R; import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;public class SelectFloderActivity extends Activity {private ListView listView;private ArrayAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_selectfloder); listView = (ListView) findViewById(R.id.listView);// 适配器adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1);//新建系统根目录下"工程机械手持数据采集存储文件"的文件File mFolder=new File(Environment.getExternalStorageDirectory(),"工程机械手持数据采集存储文件");//返回该文件下的文件和文件夹列表final File[] files = mFolder.listFiles();//将其添加到适配器中for (int i = 0; i < files.length; i++) {adapter.add(files[i].getName()); } //将适配器添加到listViewlistView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) { // TODO Auto-generated method stub //Activity跳转兼传值Intent i = new Intent();//将文件绑定在Bundle中传递到另外一个Activity中Bundle bundle = new Bundle();bundle.putSerializable("file", files[arg2]);i.putExtras(bundle); i.setClass(SelectFloderActivity.this, SelectFileActivity.class);startActivity(i);} });} }
4、创建选择文件类(SelectFileActivity)
a) 首先通过Intent.getSerializableExtra()函数,取得传递过来的文件对象mflie
b) ListView控件实例化,Button控件实例化
c) 新建数组适配器,指定适配器样式为带多选框Checkbox:android.R.layout.simple_list_item_multiple_choice
d) 同样由mflie.listFiles()函数得到mflie文件下的文件列表
e) 将该文件列表下的文件名用Sting.substring(…,..)去掉后4个字符,在添加到适配器上
f) 将适配器加载到ListView上
g) 设置ListView的选择模式为多选
h) 设置Button的监听器
i) 全选按钮的监听器下,遍历所有adapter.getCount(),用ListView.setItemChecked(…,… )函数将所有的Checkbox设为true
j) 取消按钮的监听器下,同样遍历所有,将所有的Checkbox设为flase
k) 反选按钮的监听器下,同样遍历所有,用ListView.isItemChecked(id)判断某id的选择状态,然后将其反选
l) 确认按钮的监听器下,同样遍历所有,将所有选择Check为true的文件和id都添加到文件集合ArrayList<File>和整型集合ArrayList<Integer>,并将这两个集合传递到下一个Activity中。
package com.example.engineering7.Activity;import java.io.File;import java.util.ArrayList; import android.R.integer;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView; import com.example.engineering7.R;public class SelectFileActivity extends Activity {private ListView listView;private ArrayAdapter adapter;private Button AllCheckButton;private Button InversCheckButton;private Button CancelButton;private Button OkButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_selectfile); //取得传递过来的文件Intent mIntent = this.getIntent();File mflie=(File) mIntent.getSerializableExtra("file"); listView = (ListView) findViewById(R.id.listView);// 适配器 带CheckBox的适配器adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_multiple_choice);//返回该文件下的文件和文件夹列表final File[] files = mflie.listFiles();//将其添加到适配器中for (int i = 0; i < files.length; i++) {//得到文件名String s = files[i].getName();//将文件名的最后4个字符(.txt)去掉s = s.substring(0, s.length()-4);adapter.add(s); } listView.setAdapter(adapter); //设置多选listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);AllCheckButton = (Button) findViewById(R.id.AllCheck_Button);InversCheckButton = (Button) findViewById(R.id.InvertCheck_Button);CancelButton = (Button) findViewById(R.id.CancalCheck_Button);OkButton = (Button) findViewById(R.id.OK_Button);//全选按钮的监听器AllCheckButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubfor (int i = 0; i < adapter.getCount(); i++) {listView.setItemChecked(i, true); }}});//反选按钮的监听器InversCheckButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubfor (int i = 0; i < adapter.getCount(); i++) {if (!listView.isItemChecked(i)) {listView.setItemChecked(i, true); }else {listView.setItemChecked(i, false); }}}});//取消按钮的监听器CancelButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubfor (int i = 0; i < adapter.getCount(); i++) {listView.setItemChecked(i, false); }}});//确认按钮的监听器OkButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubArrayList<File> mFiles=new ArrayList<File>();ArrayList<Integer> nums=new ArrayList<Integer>();for (int i = 0; i < adapter.getCount(); i++) {if (listView.isItemChecked(i)) { mFiles.add(files[i]);nums.add(i);}} Intent mIntent = new Intent();Bundle bundle = new Bundle();bundle.putSerializable("file", mFiles);bundle.putSerializable("num", nums);mIntent.putExtras(bundle); mIntent.setClass(SelectFileActivity.this, DisplayBackActivity.class);startActivity(mIntent);}}); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) { // TODO Auto-generated method stub////Intent i = new Intent();////Bundle bundle = new Bundle();//bundle.putSerializable("file", files[arg2]);//i.putExtras(bundle); ////i.setClass(SelectFileActivity.this, DisplayBackActivity.class);//startActivity(i); }});} }
5、AndroidManifest.xml添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客)
by 2015.1.29 早
- Android文件查看与读取(一)
- Android--文件保存与读取
- Android 文件保存与读取
- Android--文件保存与读取
- Android文件保存与读取
- linux命令行学习(一):查看文件与路径
- Python3,文件读取(一)
- Android图片查看(一)
- Android 数据存储与读取:文件
- Android----文件的保存与读取
- Android---02---文件的保存与读取
- 【Android】【转】文件保存与读取
- Android学习笔记:文件读取与ListView
- android文件的保存与读取
- Android 文件的读取与写入
- android 文件系统操作 文件读取与写入
- android---文件的保存与读取
- android文件的写入与读取
- linux select函数用法
- Robotium中文API(14)-solo.clickOnEditText
- cocos2dx之抽奖界面与获奖概率的设计(一)
- Mavn的web项目运行Main函数
- 教你如何做决策--运筹学的初识
- Android文件查看与读取(一)
- 新手学EasyUi+JS----ComboBox 级联
- 编解码学习笔记(二):codec类型
- ubuntu14 apache php mysql pdo 安装
- iOS获取设备信息
- POJ 3744 Scout YYF I 矩阵快速幂优化--概率dp
- Spring事务属性详解
- Android 修改系统默认盘符名称
- 交叉编译enca