Android:控件AutoCompleteTextView 客戶端保存搜索歷史自動提示


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <AutoCompleteTextView
            android:id="@+id/auto"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:completionHint="最近5條記錄"
            android:completionThreshold="1"
            />

        <Button
            android:id="@+id/search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="搜索" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <Button
            android:id="@+id/clean"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="清除歷史記錄" 
            android:onClick="cleanHistory"
            />
    </LinearLayout>

</LinearLayout>

 

public class TestActivity extends Activity {
    private AutoCompleteTextView auto;
    private Button searchbtn;
    private ArrayAdapter<String> arr_adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        // 初始化
        auto = (AutoCompleteTextView) findViewById(R.id.auto);
        searchbtn = (Button) findViewById(R.id.search);

        // 獲取搜索記錄文件內容
        SharedPreferences sp = getSharedPreferences("search_history", 0);
        String history = sp.getString("history", "暫時沒有搜索記錄");

        // 用逗號分割內容返回數組
        String[] history_arr = history.split(",");

        // 新建適配器,適配器數據為搜索歷史文件內容
        arr_adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, history_arr);

        // 保留前50條數據
        if (history_arr.length > 50) {
            String[] newArrays = new String[50];
            // 實現數組之間的復制
            System.arraycopy(history_arr, 0, newArrays, 0, 50);
            arr_adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_dropdown_item_1line, history_arr);
        }

        // 設置適配器
        auto.setAdapter(arr_adapter);

        // 設置監聽事件,點擊搜索寫入搜索詞
        searchbtn.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                save();
            }

        });

    }


    public void save() {
        // 獲取搜索框信息
        String text = auto.getText().toString();
        SharedPreferences mysp = getSharedPreferences("search_history", 0);
        String old_text = mysp.getString("history", "暫時沒有搜索記錄");
        
        // 利用StringBuilder.append新增內容,逗號便於讀取內容時用逗號拆分開
        StringBuilder builder = new StringBuilder(old_text);
        builder.append(text + ",");

        // 判斷搜索內容是否已經存在於歷史文件,已存在則不重復添加
        if (!old_text.contains(text + ",")) {
            SharedPreferences.Editor myeditor = mysp.edit();
            myeditor.putString("history", builder.toString());
            myeditor.commit();
            Toast.makeText(this, text + "添加成功", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, text + "已存在", Toast.LENGTH_SHORT).show();
        }

    }
    
    //清除搜索記錄
    public void cleanHistory(View v){
        SharedPreferences sp =getSharedPreferences("search_history",0);
        SharedPreferences.Editor editor=sp.edit();
        editor.clear();
        editor.commit();
        Toast.makeText(this, "清除成功", Toast.LENGTH_SHORT).show();
        super.onDestroy();
    }
    
}

 實例下載>>>>

 

相關文章:

儲存方式之SharePreferences

AutoCompleteTextView 自動提示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM