zoukankan      html  css  js  c++  java
  • Android记事本在菜单栏添加搜索按钮方法

    效果图

    这个app结构和我之前将记事本开发的博客基本一致,我这里直接讲一下怎样添加

    使用的开发软件为android studio

    首先在res目录下新建文件夹menu,添加目录布局文件main_menu

     之后在main_menu中添加如下代码

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@+id/search"
            android:icon="@drawable/ic_search_black_24dp"/这里设置图标,可以自由选择,我是在drawable下添加了放大镜的图标并在此引用
            android:title="Search"
            app:actionViewClass="android.widget.SearchView"
            app:showAsAction="always"
            ></item>
    </menu>
    

      之后在Mainactivity中重写onCreateOptionsMenu(Menu menu)函数,监听等功能都在此实现

     public boolean onCreateOptionsMenu(Menu menu)
        {
            getMenuInflater().inflate(R.menu.main_menu,menu);
            MenuItem search=menu.findItem(R.id.search);
            SearchView mysearchview=(SearchView)search.getActionView();
            mysearchview.setQueryHint("搜索");
            mysearchview.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
                @Override
    //当提交搜索框内容后执行的方法
    public boolean onQueryTextSubmit(String query) { return false; } @Override
    //当搜索框内内容改变时执行的方法
    public boolean onQueryTextChange(String newText) { refresh(newText);//数据更新函数,newText为获取到的搜索框中内容 return false; } }); return super.onCreateOptionsMenu(menu); }

    更新函数

    void refresh(String key)
    {
    
        SimpleAdapter adapter = new SimpleAdapter(this,MainActivity.this.mytable.getdata(key), R.layout.list
                , new String[]{"id","text","time"},
                new int[]{R.id.id,R.id.text,R.id.time});
        ListView listView=(ListView)findViewById(R.id.vi);
        listView.setAdapter(adapter);
    
    }

    这里附上数据库操作类中getdata()方法

     public List<Map<String,Object>> getdata(String key)
        {List<Map<String,Object>>list=new ArrayList<Map<String,Object>>();
            Map<String,Object> map=new HashMap<String,Object>();
    
            String sql="SELECT id,text,time FROM "+TABLENAME+" WHERE  text LIKE '%"+key+"%' OR time LIKE  '%"+key+"%'";
            Cursor result =this.db.rawQuery(sql,null);
            for(result.moveToFirst();!result.isAfterLast();result.moveToNext())
            {
                map=new HashMap<String,Object>();
                map.put("id",result.getInt(0));
                map.put("text",result.getString(1));
                map.put("time",result.getString(2));
                list.add(map);
            }
            return  list;}

     讲得比较笼统,具体的文件结构还请参照我之前的随笔https://www.cnblogs.com/liuleliu/p/12230819.html

  • 相关阅读:
    子元素margin带动父元素拖动
    SideBar---fixed定位
    身份证号码
    正则表达式
    关于encodeURIComponent的用法
    判断用户使用的浏览设备
    获取cookie值
    第五周学习总结
    第四周学习总结
    寻找你的黑客偶像
  • 原文地址:https://www.cnblogs.com/liuleliu/p/12256918.html
Copyright © 2011-2022 走看看