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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM