編輯:關於Android編程
SearchView是android系統中內置的一個搜索框組件,可以很方便在添加在用戶界面之上,但是也帶來了一些問題,那就是searchview的UI是固定的,定制起來會很麻煩,如果對SearchView的要求比較高,完全可以采用button和EditText自己實現。這裡先簡單的說說SearchView的使用:
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".Main" > <SearchView android:id="@+id/sv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:imeOptions="actionGo" /> </LinearLayout>
在顯示suggestion的時候會用到下面的布局文件:mytextview.xml
<?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="50sp" android:orientation="vertical" > <TextView android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:paddingLeft="5sp" android:textSize="18sp" /> </LinearLayout>
main.java:
package com.app.main;
import java.lang.reflect.Field;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class Main extends Activity {
SearchView sv = null;
ListView lv = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sv = (SearchView) this.findViewById(R.id.sv);
sv.setIconifiedByDefault(false);
sv.setSubmitButtonEnabled(true);
sv.setQueryHint("查詢");
//通過反射,修改默認的樣式,可以從android的search_view.xml中找到需要的組件
try {
Field field = sv.getClass().getDeclaredField("mSubmitButton");
field.setAccessible(true);
ImageView iv = (ImageView) field.get(sv);
iv.setImageDrawable(this.getResources().getDrawable(
R.drawable.pointer));
} catch (Exception e) {
e.printStackTrace();
}
Cursor cursor = this.getTestCursor();
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.mytextview, cursor, new String[] { "tb_name" },
new int[] { R.id.textview });
sv.setSuggestionsAdapter(adapter);
sv.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String str) {
return false;
}
@Override
public boolean onQueryTextSubmit(String str) {
Toast.makeText(Main.this, str, Toast.LENGTH_SHORT).show();
return false;
}
});
}
//添加suggestion需要的數據
public Cursor getTestCursor() {
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(
this.getFilesDir() + "/my.db3", null);
Cursor cursor = null;
try {
String insertSql = "insert into tb_test values (null,?,?)";
db.execSQL(insertSql, new Object[] { "aa", 1 });
db.execSQL(insertSql, new Object[] { "ab", 2 });
db.execSQL(insertSql, new Object[] { "ac", 3 });
db.execSQL(insertSql, new Object[] { "ad", 4 });
db.execSQL(insertSql, new Object[] { "ae", 5 });
String querySql = "select * from tb_test";
cursor = db.rawQuery(querySql, null);
} catch (Exception e) {
String sql = "create table tb_test (_id integer primary key autoincrement,tb_name varchar(20),tb_age integer)";
db.execSQL(sql);
String insertSql = "insert into tb_test values (null,?,?)";
db.execSQL(insertSql, new Object[] { "aa", 1 });
db.execSQL(insertSql, new Object[] { "ab", 2 });
db.execSQL(insertSql, new Object[] { "ac", 3 });
db.execSQL(insertSql, new Object[] { "ad", 4 });
db.execSQL(insertSql, new Object[] { "ae", 5 });
String querySql = "select * from tb_test";
cursor = db.rawQuery(querySql, null);
}
return cursor;
}
}
實現的效果如下:


以上就是搜索框組件SearchView的基本使用方法,希望能給大家一個參考,也希望大家多多支持本站。
Android系統開發(8)——linx進程基本概念
一、proc文件系統傳統意義上的文件系統是用於塊設備上信息的存儲,/proc這個目錄是一個虛擬文件系統,它放置的數據都是在內存當中,所以這個目錄本身不占用任何硬盤空間。主
Android藍牙開發,報BluetoothAdapter﹕ Can't create handler inside thread that has not called Looper.prepare
這個錯誤翻譯的意思是:不能在沒有Looper.prepare的線程裡面創建handler。起初我很疑惑,我根本沒有用到工作線程,也沒有創建handler。報錯的代碼如下:
Android開發5:應用程序窗口小部件App Widgets的實現(附demo)
前言本次主要是實現一個Android應用,實現靜態廣播、動態廣播兩種改變 widget內容的方法,即在上篇博文中實驗的基礎上進行修改,所以此次實驗的重點是AppWidge
安卓之使用DexClassLoader&AssetManager啟動插件的Activity實現功能插件化
深受啟發,所以就寫了這遍文章使用文中的方法實現功能的插件化(雖用不同方法來實現的相同功能,但會從(1)中摘錄許多)。在360安全衛士一些應用中,有些功能需要添加(下載)後