SearchView+SQLiteDatabase實現搜索條加提示內容

缺陷:未實現提示功能
SearchActivity

package com.blzt.register.search;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.SearchView;
import android.widget.SimpleCursorAdapter;

import com.blzt.register.R;

public class SearchActivity extends Activity {
    private SearchView mSearchBar;

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

        mSearchBar = (SearchView) findViewById(R.id.search_bar);
        DataBase mDataBase = new DataBase(this, "wy.db", null, 1);
        Cursor mCursor = mDataBase.getReadableDatabase().rawQuery("select * from xx", null);
        SimpleCursorAdapter mSimpleCursorAdapter= new SimpleCursorAdapter(this,R.layout.my_tv,mCursor,new String[]{"title"},new int[]{R.id.tv1});
        mSearchBar.setSuggestionsAdapter(mSimpleCursorAdapter);

    }
}

DataBase

package com.blzt.register.search;


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBase extends SQLiteOpenHelper {
    public DataBase(final Context context, final String name, final SQLiteDatabase.CursorFactory factory, final int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(final SQLiteDatabase mSQLiteDatabase) {
        mSQLiteDatabase.execSQL("create table xx(_id integer primary key autoincrement,title text)");
        for(int i=0;i<5;i++){
            String string1="aaaa"+i;
            String string2="aabb"+i;
            String string3="bbbb"+i;

            mSQLiteDatabase.execSQL("insert into xx(title) values(?)",new String[]{string1});
            mSQLiteDatabase.execSQL("insert into xx(title) values(?)",new String[]{string2});
            mSQLiteDatabase.execSQL("insert into xx(title) values(?)",new String[]{string3});
        }

    }

    @Override
    public void onUpgrade(final SQLiteDatabase mSQLiteDatabase, final int mI, final int mI1) {

    }
}

佈局文件activity_search

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".search.SearchActivity">
    <SearchView
        android:id="@+id/search_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </SearchView>

</RelativeLayout>

改進版:通過設置監聽可以實現點擊提示的內容直接進行搜索

package com.blzt.register.search;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.SearchView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

import com.blzt.register.R;

public class SearchActivity extends Activity {
    private SearchView mSearchBar;

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

        mSearchBar = (SearchView) findViewById(R.id.search_bar);
        DataBase mDataBase = new DataBase(this, "wy.db", null, 1);
        Cursor mCursor = mDataBase.getReadableDatabase().rawQuery("select * from xx", null);
        SimpleCursorAdapter mSimpleCursorAdapter= new SimpleCursorAdapter(this,R.layout.my_tv,mCursor,new String[]{"title"},new int[]{R.id.tv1});
        mSearchBar.setSuggestionsAdapter(mSimpleCursorAdapter);
        mSearchBar.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
            @Override
            public boolean onSuggestionSelect(final int mI) {
                return false;
            }

            @Override

            public boolean onSuggestionClick(final int mI) {
//                點擊提示條目獲取條目的位置
                Toast.makeText(SearchActivity.this, mI+"", Toast.LENGTH_SHORT).show();
                return false;
            }
        });
        mSearchBar.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(final String mS) {
//                點擊軟鍵盤搜索按鈕,自動獲取edittext的內容進行搜索
                Toast.makeText(SearchActivity.this, mS, Toast.LENGTH_SHORT).show();
                return false;
            }

            @Override
            public boolean onQueryTextChange(final String mS) {
                return false;
            }
        });

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章