缺陷:未實現提示功能
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;
}
});
}
}