如何在Android中实现Search Activity
来源:互联网 发布:ubuntu如何安装vmtools 编辑:程序博客网 时间:2024/06/09 14:53
废话少说,先放效果图:
Layout文件内容如下:
这里要注意的是ListView的id一定要命名为 “@android:id/list",否则会出现异常。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" > <EditText android:id="@+id/txtSearchKeyword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" > <requestFocus > </requestFocus> </EditText> <Button android:id="@+id/btnSearch" android:layout_width="100dp" android:layout_height="wrap_content" android:text="搜索" > </Button> </LinearLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" > <!-- Here is the list. Since we are using a ListActivity, we have to call it "@android:id/list" so ListActivity will find it --> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false" /> <!-- Here is the view to show if the list is emtpy --> <TextView android:id="@+id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:text="test" /> </FrameLayout></LinearLayout>
Activity的Java代码如下:
其中用到的DBHelper是自己实现的数据库辅助类,用到的search方法请大家自行实现。
package xxxx.xxxxx;import android.app.ListActivity;import android.content.Context;import android.graphics.Color;import android.os.Bundle;import android.text.Spannable;import android.text.style.ForegroundColorSpan;import android.util.Log;import android.util.TypedValue;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListAdapter;import android.widget.TextView;public class SearchActivity extends ListActivity{DBHelper db;Context context = null;BibleArrayAdapter<String> mAdapter;Button btnSearch;EditText txtSearchKeyword;java.lang.String mKeyword = null;private String[] mStrings = new String[] {};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);context = this;setContentView(R.layout.search_activity);// Tell the list view which view to display when the list is emptygetListView().setEmptyView(findViewById(R.id.empty)); txtSearchKeyword = (EditText) findViewById(R.id.txtSearchKeyword); //为搜索按钮添加事件btnSearch = (Button) findViewById(R.id.btnSearch);btnSearch.setOnClickListener(mSearchButtonListener);setListAdapter(getMyListAdapter());}private OnClickListener mSearchButtonListener = new OnClickListener() {public void onClick(View v) {mAdapter.Search(txtSearchKeyword.getText().toString());}};private ListAdapter getMyListAdapter() {mAdapter = new BibleArrayAdapter<String>(this,R.layout.my_list_view, mStrings);return mAdapter;}@SuppressWarnings({ "hiding", "rawtypes" })class BibleArrayAdapter<String> extends ArrayAdapter {@SuppressWarnings("unchecked")public BibleArrayAdapter(SearchActivity searchActivity, int resource,Object[] objects) {super(searchActivity, resource, objects);}/** * 重画listview中每个Item */public View getView(int position, View convertView, ViewGroup parent) {View row = convertView;java.lang.String content;java.lang.String label;StringBuffer sb = new StringBuffer(mStrings[position]);if (row == null) {LayoutInflater inflater = getLayoutInflater();row = inflater.inflate(R.layout.c_row, parent, false);}content = sb.toString();TextView tvContent = (TextView) row.findViewById(R.id.content);tvContent.setTextSize(TypedValue.COMPLEX_UNIT_DIP, Constant.fontsize);tvContent.setTextColor(Color.BLACK);tvContent.setBackgroundColor(Color.WHITE);tvContent.setPadding(0, 5, 0, 5);//高亮显示关键字tvContent.setText(content,TextView.BufferType.SPANNABLE);if (content.indexOf(mKeyword) >= 0) {Spannable sp = (Spannable) tvContent.getText(); sp.setSpan(new ForegroundColorSpan(Color.RED), content.indexOf(mKeyword), content.indexOf(mKeyword)+mKeyword.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}return row;}/** * 搜索框,写在内部类中是因为要用到notifyDataSetChanged方法 * @param keyword */public void Search(java.lang.String keyword) {db = new DBHelper(context);try {mKeyword = keyword;mStrings = db.search(keyword);setListAdapter(getMyListAdapter());notifyDataSetChanged();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (db != null) db.close();}}}}
- 如何在Android中实现Search Activity
- 如何在Android中实现悬浮Activity
- Android如何在非Activity类中实现Vibrate效果
- 怎么在activity中实现android:drawableLeft
- android 如何实现apk search出现在…
- android 应用如何实现多个Activity在栈中finish掉
- Android中如何实现两个Activity中传递自定义数据
- android 如何在activity中控制屏幕点亮与关闭
- android 在service中如何向activity传递数据
- 【android-tips】如何在view中取得activity对象
- Android开发实用技巧:如何在Activity中获取资源
- android如何在activity中控制屏幕点亮与关闭
- Android如何在activity中控制屏幕点亮与关闭
- android中如何实现开机启动某些服务,activity等
- android 服务的应用,在Activity中实现背景音乐播放
- android 欢迎界面的实现在一个activity中
- android 服务的应用,在Activity中实现背景音乐播放
- android 服务的应用,在Activity中实现背景音乐播放
- 关于windows下堆内存的申请与释放
- My PMP
- 如何导出命令帮助--linux
- Android Actionbar学习笔记(三)-----修改Actionbar的样式
- 随笔· Hadoop相关
- 如何在Android中实现Search Activity
- 进程管理测试(1)
- Beating the Talent Crunch With a Distributed Team
- combobox只读属性
- 【刘剑领导力】卓越领导魅力的十大行为秘籍-卓越领导网
- NPN和PNP作为开关管的设计技巧以及全系列三极管参数
- C++中的vector使用范例
- 数据库索引的使用(转自百度分享)
- sqlserver2000 导出数据至 oracle