黑莓6.0列表模糊搜索高亮显示
2013-06-28 17:17
218 查看
首先,绘制界面。一个输入框EditField,一个按钮,代码省略。
效果图:
下面,主要介绍搜索的原理:
以上的搜索原理也很简单,在下面就是绘制问题了。我采取最简单的substring(没办法技术有限)
效果图:
下面,主要介绍搜索的原理:
private Vector search(Vector data,String key)//这个方法是搜索获取结果,当然也可以忽略大小写,全部toLowerCase { Vector v = new Vector(); for (int i = 0; i < data.size(); i++) { String name = (String) data.elementAt(i); if(name.indexOf(key) != -1) { v.addElement(name); } } return v; } protected boolean trackwheelClick(int i, int j) { Field field = getFieldWithFocus(); if(field instanceof VerticalFieldManager){ field = ((VerticalFieldManager) field).getFieldWithFocus(); key = ((SearchTitleManager) field).getInput(); if (field instanceof SearchTitleManager) { field = ((SearchTitleManager) field).getFieldWithFocus(); if (field instanceof CustomButtonField) { if (key.length() > 0){ for (int k = list.getSize()-1; k >=0; k--) {//循环删除搜索前list的数据 list.delete(k); } data=search(data,key);//获取搜索的结果 if(data.size() == 0) { data = sdata;//如果搜索结果为空,就使用原来的数据,sdata在最初添加数据的时候赋值 } for (int l = 0; l< data.size(); l++) { list.insert(l); } list.invalidate(); } else{ for (int k = list.getSize() - 1; k >= 0; k--) { list.delete(k); } data = sdata; for (int l = 0; l< data.size(); l++) { list.insert(l); } list.invalidate(); } } return true; } } return true; }
以上的搜索原理也很简单,在下面就是绘制问题了。我采取最简单的substring(没办法技术有限)
public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width) { String str = (String) this.get(listField, index); Font font = Font.getDefault(); if(key.length()>0) { StringBuffer sb = new StringBuffer(); graphics.setColor(Color.BLACK); graphics.drawText(str.substring(0, str.indexOf(key)), 0, y); graphics.setColor(Color.RED); graphics.drawText(str.substring(str.indexOf(key), str.indexOf(key)+key.length()), font.getAdvance(str.substring(0, str.indexOf(key))), y); graphics.setColor(Color.BLACK); graphics.drawText(str.substring(str.indexOf(key)+key.length(), str.length()), font.getAdvance(str.substring(0, str.indexOf(key)+key.length())), y); sb.append(str.substring(0, str.indexOf(key))); sb.append(str.substring(str.indexOf(key), str.indexOf(key)+key.length())); sb.append(str.substring(str.indexOf(key)+key.length(), str.length())); }else{ graphics.setColor(Color.BLACK); graphics.drawText(str, 0, y); } }绘制方法可以重新写一个单独的方法,因为绘制焦点的时候还要用。
相关文章推荐
- js模糊搜索关键字高亮显示,将字体变成红色
- zTree实现模糊搜索并高亮显示
- 用JS将搜索的关键字高亮显示实现代码
- JS将搜索的关键字高亮显示实现代码
- ajax实现模糊查询完成列表信息显示
- 一个Lucene 2.4.0对搜索结果高亮显示的代码
- 搜索完后,让搜索后的关键字高亮显示
- easyui-combobox---ajax获取数据库JSON数据,实现搜索框实时显示模糊搜索结果
- mvc列表显示筛选 或者模糊查询
- C#中搜索关键词高亮显示函数
- ubutun find 命令搜索结果 高亮(红色)显示匹配的部分
- 搜索学习入门--使用LuceneHighlighter高亮显示Lucene检索结果的关键词
- 类似百度 google的模糊搜索下拉列表
- 发一个Lucene 2.4.0对搜索结果高亮显示的代码
- 在domino中搜索关键字时高亮显示搜索结果
- 转 lucene3搜索引擎,索引建立搜索排序分页高亮显示, IKAnalyzer分词
- C#中搜索关键词高亮显示
- ECSHOP模糊分词搜索和商品列表关键字飘红功能
- android开发游记:a-z列表快速查找功能和搜索关键字高亮
- Ztree 实现搜索节点高亮显示,重置功能