1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android 搜索框的实时查询/模糊查询

Android 搜索框的实时查询/模糊查询

时间:2020-09-29 03:27:04

相关推荐

Android 搜索框的实时查询/模糊查询

在搜索框的检索中我们经常会遇到“精确检索”、“模糊检索”,精确检索我就不多加解释了,我们看下模糊检索:

参考:

/jdsjlzx/article/details/46514761

/jeffen/p/6958235.html

/ljd4305/article/details/39375163

这里实现的是搜索框时时查询,代码中是在数据库中使用的模糊查询;

整个布局使用的是线性布局,搜索框又是一个线性布局(里面包含一个相对布局和一个TextView,相对布局里面有一个EditText和ImageVIew),下面是一个ListView;

搜索框其实就是一个EditText,背景是用shape自己画出来的;上面放一个“删除”的图片;

在Activity中给EditText设置一个监听,当输入文字的时候获取输入的内容然后查询数据库,将查询到的数据展示到ListView中;

看下代码:

<LinearLayout xmlns:android="/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="43dp" android:background="@color/colorPrimaryDark" android:gravity="center" android:orientation="horizontal"> <RelativeLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <EditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="8dp" android:layout_marginLeft="10dp" android:layout_marginTop="8dp" android:background="@drawable/searchbox_bj" android:hint="请输入搜索内容" android:maxLength="10" android:paddingLeft="15dp" android:singleLine="true" android:textSize="12sp" /> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerInParent="true" android:paddingRight="20dp" android:src="@drawable/delete" android:visibility="gone" /> </RelativeLayout> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="搜索" android:textColor="#ffffff" android:textSize="20sp" /> </LinearLayout> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"></ListView> </LinearLayout>

要在EditText文本改变前执行查询 数据库的操作并实时展示

public class MainActivity extends Activity { private EditText mEditText; private ImageView mImageView; private ListView mListView; private TextView mTextView; Context context; Cursor cursor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; initView(); } private void initView() { mTextView = (TextView) findViewById(R.id.textview); mEditText = (EditText) findViewById(R.id.edittext); mImageView = (ImageView) findViewById(R.id.imageview); mListView = (ListView) findViewById(R.id.listview); //设置删除图片的点击事件 mImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //把EditText内容设置为空 mEditText.setText(""); //把ListView隐藏 mListView.setVisibility(View.GONE); } }); //EditText添加监听 mEditText.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence s, int start, int count, int after) {}//文本改变之前执行 @Override //文本改变的时候执行 public void onTextChanged(CharSequence s, int start, int before, int count) { //如果长度为0 if (s.length() == 0) { //隐藏“删除”图片 mImageView.setVisibility(View.GONE); } else {//长度不为0 //显示“删除图片” mImageView.setVisibility(View.VISIBLE); //显示ListView showListView(); } } public void afterTextChanged(Editable s) { }//文本改变之后执行 }); mTextView.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //如果输入框内容为空,提示请输入搜索内容 if(TextUtils.isEmpty(mEditText.getText().toString().trim())){ ToastUtils.showToast(context,"请输入您要搜索的内容"); }else { //判断cursor是否为空 if (cursor != null) { int columnCount = cursor.getCount(); if (columnCount == 0) { ToastUtils.showToast(context, "对不起,没有你要搜索的内容"); } } } } }); } private void showListView() { mListView.setVisibility(View.VISIBLE); //获得输入的内容 String str = mEditText.getText().toString().trim(); //获取数据库对象 MyOpenHelper myOpenHelper = new MyOpenHelper(getApplicationContext()); SQLiteDatabase db = myOpenHelper.getReadableDatabase(); //得到cursor cursor = db.rawQuery("select * from lol where name like '%" + str + "%'", null); MyListViewCursorAdapter adapter = new MyListViewCursorAdapter(context, cursor); mListView.setAdapter(adapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //把cursor移动到指定行 cursor.moveToPosition(position); String name = cursor.getString(cursor.getColumnIndex("name")); ToastUtils.showToast(context, name); } }); } }

CharSequence s, int start, int before, int count(CharSequence s, int start, int before, int count)方法中做判断,s是EditText中的文本内容;

判断如果s长度为0隐藏“删除”图片,否则显示“删除图片”,显示ListView,查询数据库获得Cursor获得CursorAdapter将内容展示到ListView中;

源码:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。