天天看點

Android檔案搜尋及輔助輸入詳解

      由于在檔案較多的情況下,為友善使用者管理自己的檔案,通常會提供類似輔助完成,檔案快速搜尋之類的功能,如使用通訊錄時在當使用者輸入漢字或數字時,會觸發一系列自動輔助輸入及搜尋功能,借這個機會,小馬寫下有關檔案搜尋與輔助輸入的功能,一簡單的DEMO,功能原理搞懂了,就萬事OK啦,吼吼,先來看看效果吧:、

一:自動輔助輸入功能

使用這個功能時請注意啦,它裡面隻監聽到的是當使用者輸入兩個或兩個以上的字元時才會觸發這個輔助輸入功能,小馬不知道是為什麼, 知道的人請指點小馬一下,謝謝

<a target="_blank" href="http://blog.51cto.com/attachment/201112/045408959.jpg"></a>

二:檔案快速搜尋功能

這是小馬模拟器裡面SD卡上的目錄結構

<a target="_blank" href="http://blog.51cto.com/attachment/201112/045445484.jpg"></a>

點選搜尋時的結果效果圖為:

此處小馬講下,就是無論你輸入多少個字元,此搜尋會把隻要包含你輸入字元的所有檔案夾搜尋出來,如果朋友們要深入搜尋的話,要記得File類中的isDirectory()判斷是否是檔案夾再來遞歸調用搜尋哦,吼吼,此處小馬隻做簡單搜尋,如有需要,功能得自己完善添加的

<a target="_blank" href="http://blog.51cto.com/attachment/201112/045537482.jpg"></a>

自動輔助輸入的功能代碼如下:

package com.xiaoma.www; 

import android.app.Activity; 

import android.os.Bundle; 

import android.widget.ArrayAdapter; 

import android.widget.AutoCompleteTextView; 

/**   

* @Title: AutoCompleteTextViewDemoActivity.java 

* @Package com.xiaoma.www 

* @Description: 自動輔助功能測試 

* @author MZH 

* @version V2.2 

*/ 

public class AutoCompleteTextViewDemoActivity extends Activity { 

    private AutoCompleteTextView act ; 

    private static String [] autoStrings =  

                    {"aa","aaa","aaaa","abcd","abcde", 

                    "bb","bbb","bbbb","bcdef","bcdefg","bcdefghi"}; 

    /** Called when the activity is first created. */ 

    @Override 

    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

        //資源定位 

        act = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); 

        //建立并設定監聽器 

        ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;(this, 

                android.R.layout.simple_dropdown_item_1line,autoStrings); 

        act.setAdapter(adapter); 

        //估計是版本更新了的原因,下面這個方法在以前的自動輔助功能 中要設定的,吼吼,現在可以不用設定了 

        //act.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); 

    } 

怎麼樣?簡單吧,不相信的話可以稍微試下,這些功能看似很難,其實試起來不難

再來看看快速搜尋檔案的代碼吧:

import java.io.File; 

import android.view.View; 

import android.view.View.OnClickListener; 

import android.widget.Button; 

import android.widget.EditText; 

import android.widget.TextView; 

* @Title: MobileFileDemoActivity.java 

* @Description: 手機檔案搜尋 

public class MobileFileDemoActivity extends Activity { 

    //聲明控件 

    private Button search; 

    private EditText key; 

    private TextView resultView; 

       init(); 

    /** 

     * 初始化方法實作 

     */ 

    private void init() { 

         //資源定位 

        search = (Button)findViewById(R.id.button1); 

        key = (EditText)findViewById(R.id.editText1); 

        resultView = (TextView)findViewById(R.id.textView1); 

        //添加監聽事件 

        search.setOnClickListener(new OnClickListener() { 

            @Override 

            public void onClick(View v) { 

                String sea = key.getText().toString(); 

                if("".equals(sea)){ 

                    key.setHint("請在此處輸入關鍵字"); 

                }else{ 

                    resultView.setText(searchFile(key.getText().toString())); 

                } 

            } 

        }); 

     * 搜尋檔案方法實作 

     * @param keyWord  關鍵字 

     * @return 搜尋到的結果 

     * 這個方法的傳回值中,隻要包含了你輸入的keyWord,哪怕是一個字母什麼的, 

     * 隻要目标路徑存在則全部展現哦,吼吼 

    private String searchFile(String keyWord){ 

        String result = ""; 

        File [] files = new File("/").listFiles(); 

        for(File f : files){ 

            if(f.getName().indexOf(keyWord)&gt;0){ 

                result += f.getPath()+"\n"; 

        } 

        if("".equals(result)){ 

            result ="無要搜尋的檔案"; 

        return result ; 

     本文轉自華華世界 51CTO部落格,原文連結:http://blog.51cto.com/mzh3344258/753501,如需轉載請自行聯系原作者

繼續閱讀