找传奇、传世资源到传世资源站!

android 文件搜索实例源码(wordfinder)

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

android 文件搜索实例源码(wordfinder) Android平台开发-第1张package com.afinder;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import com.afinder.read.InformationScanViewFile;import com.afinder.util.Util;import com.example.afinder.R;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.text.Editable;import android.text.TextUtils;import android.text.TextWatcher;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends Activity { private ArrayList<String> search_result = new ArrayList<String>();//一个字符串数组列表保存结果 private ArrayList<String> filterDateList = new ArrayList<String>(); ArrayList<HashMap<String, Object>> itemdatafilter=null; private ListView file_list; private SimpleAdapter madapter; private ClearEditText inputsearch;//输入查询 private String infopath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search_list); InitView(); } private void InitView(){ file_list=(ListView)this.findViewById(R.id.file_list); try {LoadData();} catch (Exception e) {Toast.makeText(this, "未获取到信息", Toast.LENGTH_LONG).show();} file_list.setOnItemClickListener(itemListenerfile); inputsearch=(ClearEditText)this.findViewById(R.id.inputsearch); inputsearch.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {//当输入框里面的值为空,更新为原来的列表,否则为过滤数据列表filterData(s.toString());}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void afterTextChanged(Editable s) {}}); } private void LoadData() throws Exception { boolean hasSDCard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);if (hasSDCard) {infopath = Environment.getExternalStorageDirectory().toString() File.separator "xautcate/";} else {infopath = Environment.getDownloadCacheDirectory().toString() File.separator "xautcate/";}File file = new File(infopath);if (!file.exists()) {//mkdir()只能在已经存在的目录中创建文件夹//mkdirs()可以在不存在的目录下创建多级的文件夹file.mkdirs();}getFileList(file, search_result);file_list.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,search_result)); ////绑定适配器 filterDateList=search_result; }/** * listview中选项列表的点击事件 * * **/OnItemClickListener itemListenerfile = new OnItemClickListener() {//读取文件夹下的word文件public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {// TODO Auto-generated method stubString filename=filterDateList.get(position).toString();String filePath=infopath filename; /* 取得扩展名 */ String end=filename.substring(filename.lastIndexOf(".") 1, filename.length()).toLowerCase(); if(end.equals("doc")){Intent intent = new Intent();intent.setClass(MainActivity.this, InformationScanViewFile.class);startActivity(intent);Util.pathfile=filePath;}else if(end.equals("pdf")){getPdfFileIntent(filePath);}else if(end.equals("mp4")){File file = new File(filePath);Intent intent = getVideoFileIntent(file); startActivity(intent);} }}; //android获取一个用于打开PDF文件的intent public Intent getPdfFileIntent( String filePath ) { //设置intnet的属性 Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(filePath)); intent.setDataAndType(uri, "application/pdf"); startActivity(intent); return intent; } //android中播放本地视频的调用 public Intent getVideoFileIntent(File videoFile) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(videoFile); intent.setDataAndType(uri, "video/*"); return intent; } private void getFileList(File path, ArrayList<String> search_result){ //如果是文件夹的话 if(path.isDirectory()){ //返回文件夹中有的数据 File[] files = path.listFiles(); //先判断下有没有权限,如果没有权限的话,就不执行了 if(null == files) return; for(int i = 0; i < files.length; i ){ getFileList(files[i], search_result); } } //如果是文件的话直接加入 else{ //进行文件的处理 String filePath = path.getAbsolutePath(); //文件名 String fileName = filePath.substring(filePath.lastIndexOf("/") 1); //添加 search_result.add(fileName);} }private void filterData(String filterStr){//break是结束当前的循环,但是循环体后面的部分还是会执行filterDateList=new ArrayList<String>(); if(filterDateList==null){ return; //return是返回的意思,就是跳出当前执行的方法,不在执行后面的语句; } if(!TextUtils.isEmpty(filterStr)){filterDateList.clear(); for (int i = 0; i < search_result.size(); i ) {if(search_result.get(i).contains(filterStr)){filterDateList.add(search_result.get(i));} }}else{filterDateList=search_result;}getDataFilter(filterDateList);file_list.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,filterDateList)); ////绑定适配器 }private void getDataFilter(ArrayList<String> fieldlist) {itemdatafilter=new ArrayList<HashMap<String, Object>>();if(fieldlist.size()==0){Toast.makeText(this, "没有您要查找的信息", 3000).show();}for (int i = 0; i < fieldlist.size(); i ) {try {HashMap<String, Object> map = new HashMap<String, Object>();map.put("list", fieldlist.get(i));itemdatafilter.add(map);} catch (Exception e) {e.printStackTrace();}}}}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复