android搜尋框功能實現
阿新 • • 發佈:2019-02-06
這裡實現的是搜尋框時時查詢,程式碼中是在資料庫中使用的模糊查詢;
整個佈局使用的是線性佈局,搜尋框又是一個線性佈局(裡面包含一個相對佈局和一個TextView,相對佈局裡面有一個EditText和ImageVIew),下面是一個ListView;
搜尋框其實就是一個EditText,背景是用shape自己畫出來的;上面放一個“刪除”的圖片;
在Activity中給EditText設定一個監聽,當輸入文字的時候獲取輸入的內容然後查詢資料庫,將查詢到的資料展示到ListView中;
線來看下佈局:
<LinearLayout xmlns:android="http://schemas.android.com/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>
CharSequence s, int start, int before, int count(CharSequence s, int start, int before, int count)方法中做判斷,s是EditText中的文字內容;
判斷如果s長度為0隱藏“刪除”圖片,否則顯示“刪除圖片”,顯示ListView,查詢資料庫獲得Cursor獲得CursorAdapter將內容展示到ListView中;
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); } }); } }
原始碼下載地址