电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

android實(shí)現(xiàn)搜索功能并將搜索結(jié)果保存到SQLite中(實(shí)例代碼)

瀏覽:3日期:2022-09-24 16:44:36

運(yùn)行結(jié)果:

android實(shí)現(xiàn)搜索功能并將搜索結(jié)果保存到SQLite中(實(shí)例代碼)android實(shí)現(xiàn)搜索功能并將搜索結(jié)果保存到SQLite中(實(shí)例代碼)android實(shí)現(xiàn)搜索功能并將搜索結(jié)果保存到SQLite中(實(shí)例代碼)

涉及要點(diǎn):

ListView+EditText+ScrollView實(shí)現(xiàn)搜索效果顯示 監(jiān)聽(tīng)軟鍵盤(pán)回車(chē)執(zhí)行搜索 使用TextWatcher( )實(shí)時(shí)篩選 將搜索內(nèi)容存儲(chǔ)到SQLite中(可清空歷史記錄) 監(jiān)聽(tīng)EditText的焦點(diǎn),獲得焦點(diǎn)彈出軟鍵盤(pán)同時(shí)顯示搜索歷史,失去焦點(diǎn)隱藏軟件盤(pán)和ListView。

實(shí)現(xiàn)過(guò)程比較簡(jiǎn)單,都是常用的,這里就不講解了。代碼可直接復(fù)制使用。

實(shí)現(xiàn)過(guò)程:

MainActivity.java

public class MainActivity extends Activity { private EditText et_search; private TextView tv_tip; private MyListView listView; private TextView tv_clear; ScrollView scrollView; private RecordSQLiteOpenHelper helper = new RecordSQLiteOpenHelper(this); private SQLiteDatabase db; private BaseAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); // 初始化控件 // 清空搜索歷史 tv_clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { deleteData(); queryData(''); } }); et_search.setOnKeyListener(new View.OnKeyListener() {// 輸入完后按鍵盤(pán)上的搜索鍵 public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {// 修改回車(chē)鍵功能 // 隱藏鍵盤(pán) ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow( getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); // 按完搜索鍵后將當(dāng)前查詢(xún)的關(guān)鍵字保存起來(lái),如果該關(guān)鍵字已經(jīng)存在就不執(zhí)行保存 boolean hasData = hasData(et_search.getText().toString().trim()); if (!hasData) { insertData(et_search.getText().toString().trim()); queryData(''); } Toast.makeText(MainActivity.this, '點(diǎn)擊軟鍵盤(pán)搜索!', Toast.LENGTH_SHORT).show(); } return false; } }); et_search.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean b) { if (b) { //獲得 scrollView.setVisibility(View.VISIBLE); } else {//市區(qū)焦點(diǎn) scrollView.setVisibility(View.GONE); } } }); // 搜索框的文本變化實(shí)時(shí)監(jiān)聽(tīng) et_search.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (s.toString().trim().length() == 0) { tv_tip.setText('搜索歷史'); } else { tv_tip.setText('搜索結(jié)果'); } String tempName = et_search.getText().toString(); // 根據(jù)tempName去模糊查詢(xún)數(shù)據(jù)庫(kù)中有沒(méi)有數(shù)據(jù) queryData(tempName); } }); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView textView = (TextView) view.findViewById(android.R.id.text1); String name = textView.getText().toString(); et_search.setText(name); Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show(); ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow( getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); //隱藏軟鍵盤(pán) et_search.clearFocus(); et_search.setText(''); } }); // 插入測(cè)試數(shù)據(jù) Date date = new Date(); long time = date.getTime(); insertData('LY' + time); queryData(''); // 第一次進(jìn)入查詢(xún)所有的歷史記錄 } /** * 插入數(shù)據(jù) */ private void insertData(String tempName) { db = helper.getWritableDatabase(); db.execSQL('insert into records(name) values(’' + tempName + '’)'); db.close(); } /** * 模糊查詢(xún)數(shù)據(jù) */ private void queryData(String tempName) { Cursor cursor = helper.getReadableDatabase().rawQuery( 'select id as _id,name from records where name like ’%' + tempName + '%’ order by id desc ', null); // 創(chuàng)建adapter適配器對(duì)象 adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, new String[]{'name'}, new int[]{android.R.id.text1}, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); // 設(shè)置適配器 listView.setAdapter(adapter); adapter.notifyDataSetChanged(); } /** * 檢查數(shù)據(jù)庫(kù)中是否已經(jīng)有該條記錄 */ private boolean hasData(String tempName) { Cursor cursor = helper.getReadableDatabase().rawQuery( 'select id as _id,name from records where name =?', new String[]{tempName}); //判斷是否有下一個(gè) return cursor.moveToNext(); } /** * 清空數(shù)據(jù) */ private void deleteData() { db = helper.getWritableDatabase(); db.execSQL('delete from records'); db.close(); } private void initView() { et_search = (EditText) findViewById(R.id.et_search); scrollView = findViewById(R.id.showSearch); tv_tip = (TextView) findViewById(R.id.tv_tip); listView = (com.cwvs.microlife.MyListView) findViewById(R.id.listView); tv_clear = (TextView) findViewById(R.id.tv_clear); // 調(diào)整EditText左邊的搜索按鈕的大小 Drawable drawable = getResources().getDrawable(R.drawable.search); drawable.setBounds(0, 0, 60, 60);// 第一0是距左邊距離,第二0是距上邊距離,60分別是長(zhǎng)寬 et_search.setCompoundDrawables(drawable, null, null, null);// 只放左邊 }}

RecordSQLiteOpenHelper.java

public class RecordSQLiteOpenHelper extends SQLiteOpenHelper { private static String name = 'temp.db'; private static Integer version = 1; public RecordSQLiteOpenHelper(Context context) { super(context, name, null, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL('create table records(id integer primary key autoincrement,name varchar(200))'); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}

MyListView.java

public class MyListView extends ListView {public MyListView(Context context) {super(context);}public MyListView(Context context, AttributeSet attrs) {super(context, attrs);}public MyListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}

activity_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:focusable='true' android:focusableInTouchMode='true' android:orientation='vertical' tools:context='.MainActivity'> <LinearLayout android:layout_width='fill_parent' android:layout_height='50dp' android:background='#be9999' android:orientation='horizontal' android:paddingRight='16dp'> <ImageView android:layout_width='45dp' android:layout_height='45dp' android:layout_gravity='center_vertical' android:padding='10dp' android:src='http://www.hdgsjgj.cn/bcjs/@drawable/back' /> <EditText android: android:layout_width='0dp' android:layout_height='fill_parent' android:layout_weight='264' android:background='@null' android:drawableLeft='@drawable/search' android:drawablePadding='8dp' android:gravity='start|center_vertical' android:hint='輸入查詢(xún)的關(guān)鍵字' android:imeOptions='actionSearch' android:singleLine='true' android:textColor='@android:color/white' android:textSize='16sp' /> </LinearLayout> <ScrollView android: android:layout_width='wrap_content' android:layout_height='300dp' android:visibility='gone'> <LinearLayout 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='vertical' android:paddingLeft='20dp'> <TextView android: android:layout_width='match_parent' android:layout_height='50dp' android:gravity='left|center_vertical' android:text='搜索歷史' /> <View android:layout_width='match_parent' android:layout_height='1dp' android:background='#EEEEEE' /> <liyue.edu.cn.ncst.app.MyListView android: android:layout_width='match_parent' android:layout_height='wrap_content' /> </LinearLayout> <View android:layout_width='match_parent' android:layout_height='1dp' android:background='#EEEEEE' /> <TextView android: android:layout_width='match_parent' android:layout_height='40dp' android:background='#F6F6F6' android:gravity='center' android:text='清除搜索歷史' /> <View android:layout_width='match_parent' android:layout_height='1dp' android:layout_marginBottom='20dp' android:background='#EEEEEE' /> </LinearLayout> </ScrollView></LinearLayout>

完整代碼下載 demo

到此這篇關(guān)于android實(shí)現(xiàn)搜索功能并將搜索結(jié)果保存到SQLite中(實(shí)例代碼)的文章就介紹到這了,更多相關(guān)android 搜索功能搜索結(jié)果保存sqlite內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 干培两用箱-细菌恒温培养箱-菲斯福仪器| 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 在线悬浮物浓度计-多参数水质在线检测仪-上海沃懋仪表科技有限公司 | 高光谱相机-近红外高光谱相机厂家-高光谱成像仪-SINESPEC 赛斯拜克 | 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 加热制冷恒温循环器-加热制冷循环油浴-杭州庚雨仪器有限公司 | 宝宝药浴-产后药浴-药浴加盟-艾裕-专注母婴调养泡浴 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 27PR跨境电商导航 | 专注外贸跨境电商 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | YJLV22铝芯铠装电缆-MYPTJ矿用高压橡套电缆-天津市电缆总厂 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 |