- 浏览: 5831417 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
这个是网上找的.
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.os.CountDownTimer; import android.text.Editable; import android.text.Html; import android.text.Spanned; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.SlidingDrawer; import android.widget.TextView; public class DemoHomeActivity extends Activity { private static final String TAG = "DemoHomeActivity"; private SlidingDrawer mDrawer; private TextView input_tv; private EndClosedMyDrawer mClosedDrawer; private ListView listview; private String [] test = new String[]{"010668971455","020132456","01058585896","02168000000","02168000001","1372160485","195369871"}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); mClosedDrawer = new EndClosedMyDrawer(5000,1000); new UpdateListTask().execute(getTextNumber()); } protected void onRestart() { new UpdateListTask().execute(getTextNumber()); super.onRestart(); } public void init(){ mDrawer=(SlidingDrawer)findViewById(R.id.slidingdrawer); input_tv = (TextView)findViewById(R.id.input_dialpad_tv); listview = (ListView)findViewById(R.id.listview); input_tv.addTextChangedListener(watcher); } private TextWatcher watcher = new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { new UpdateListTask().execute(getTextNumber()); } }; private void keyPressed ( int keyCode ){ mDrawer.open(); try{ mClosedDrawer.cancel(); }catch (Exception e) { Log.i(TAG, "This is the first run updatelist Countdown!"); } mClosedDrawer.start(); } public boolean onKeyDown(int keyCode, KeyEvent event){ switch (keyCode){ case KeyEvent.KEYCODE_0 : keyPressed(KeyEvent.KEYCODE_0); input_tv.append("0"); break; case KeyEvent.KEYCODE_1 : keyPressed(KeyEvent.KEYCODE_1); input_tv.append("1"); break; case KeyEvent.KEYCODE_2 : keyPressed(KeyEvent.KEYCODE_2); input_tv.append("2"); break; case KeyEvent.KEYCODE_3 : keyPressed(KeyEvent.KEYCODE_3); input_tv.append("3"); break; case KeyEvent.KEYCODE_4 : keyPressed(KeyEvent.KEYCODE_4); input_tv.append("4"); break; case KeyEvent.KEYCODE_5 : keyPressed(KeyEvent.KEYCODE_5); input_tv.append("5"); break; case KeyEvent.KEYCODE_6 : keyPressed(KeyEvent.KEYCODE_6); input_tv.append("6"); break; case KeyEvent.KEYCODE_7 : keyPressed(KeyEvent.KEYCODE_7); input_tv.append("7"); break; case KeyEvent.KEYCODE_8 : keyPressed(KeyEvent.KEYCODE_8); input_tv.append("8"); break; case KeyEvent.KEYCODE_9 : keyPressed(KeyEvent.KEYCODE_9); input_tv.append("9"); break; case KeyEvent.KEYCODE_STAR : keyPressed(KeyEvent.KEYCODE_STAR); input_tv.append("*"); break; case KeyEvent.KEYCODE_POUND : keyPressed(KeyEvent.KEYCODE_POUND); input_tv.append("#"); break; case KeyEvent.KEYCODE_DEL: keyPressed(KeyEvent.KEYCODE_DEL); CharSequence str = ""; str = input_tv.getText(); if(str != null && str.length() > 0){ String temp = str.toString(); if(temp.length() == 1){ input_tv.setText(""); }else if(temp.length() > 1){ input_tv.setText(temp.subSequence(0, temp.length()-1)); } } break; default: return super.onKeyDown(keyCode, event); } return true; } /** * Customize Adapter, so that realize highlighted keywords */ private class HightKeywordsAdapter extends BaseAdapter{ private List list; private Context context; private String[] from; private int[] to; private int layoutid; private HashMap info; LayoutInflater myInflater; HashMap item; public HightKeywordsAdapter(Context context, List list, int layoutid, String[] from,int[] to){ this.context = context; this.list = list; this.from = from; this.to = to; this.layoutid = layoutid; } public int getCount() { // TODO Auto-generated method stub return list.size(); } public Object getItem(int position) { // TODO Auto-generated method stub return list.get(position); } public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View convertView, ViewGroup parent) { myInflater = LayoutInflater.from(context); try { item = (HashMap) list.get(position); convertView = myInflater.inflate(layoutid, null); convertView.setTag(item); }catch (Exception e) { Log.e(TAG, "Hight Key Error! "); } View number = convertView.findViewById(to[0]); if (number instanceof TextView) { TextView number_tv = (TextView) number; number_tv = (TextView) number; String number_temp = ""; number_temp = item.get(from[0]).toString(); String input = input_tv.getText().toString(); if(number_temp.contains(input)){ //Methods 1 int index = number_temp.indexOf(input); int len = input.length(); Spanned temp = Html.fromHtml(number_temp.substring(0, index) + "<u><font color=#5DB43B>" + number_temp.substring(index, index + len) + "</font></u>" + number_temp.substring(index + len, number_temp.length())); //Methods 2 /*int start = number.indexOf(input); SpannableStringBuilder style=new SpannableStringBuilder(number); style.setSpan(new Tex(Color.RED), start, start + input.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); */ number_tv.setText(temp); } } return convertView; } } private synchronized List updateNumberslist(String input) { List list = new ArrayList<HashMap<String, String>>(); if(input == null) { for(int i=0;i<test.length;i++){ HashMap<String, String> number_info = new HashMap<String, String>(); number_info.put("number", test[i]); list.add(number_info); } } else { for(int i=0;i<test.length;i++){ if(test[i].contains(input)){ HashMap<String, String> number_info = new HashMap<String, String>(); number_info.put("number", test[i]); list.add(number_info); } } } return list; } private String getTextNumber(){ if(input_tv.getText() != null && input_tv.getText().length() > 0){ return input_tv.getText().toString(); }else{ return null; } } private class UpdateListTask extends AsyncTask<String, Integer, BaseAdapter> { protected BaseAdapter doInBackground(String... params) { BaseAdapter listAdapter = new HightKeywordsAdapter(DemoHomeActivity.this, updateNumberslist(getTextNumber()), android.R.layout.simple_list_item_1, new String[] {"number" }, new int[] {android.R.id.text1 }); return listAdapter; } protected void onPostExecute(BaseAdapter result) { listview.setAdapter(result); } } //计数器 private class EndClosedMyDrawer extends CountDownTimer { public EndClosedMyDrawer(long millisInFuture, long countDownInterval){ super(millisInFuture, countDownInterval); } public void onFinish(){ //Log.i(TAG, "Start asyncTask to updateList !"); mDrawer.close(); } public void onTick(long millisUntilFinished){ } } }
发表评论
-
NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端
2018-10-31 20:45 7031网上有一个StickyScrollView,称之为粘性Scro ... -
自定义Behavior实现AppBarLayout越界弹性效果
2017-03-31 09:33 10395一、继承AppBarLayout.Beha ... -
Android - 一种相似图片搜索算法的实现
2017-03-31 09:33 2636算法 缩小尺寸。 将图片缩小到8x8的尺寸,总共64个 ... -
使用SpringAnimation实现带下拉弹簧动画的 ScrollView
2017-03-30 11:30 2865在刚推出的 Support Library 25.3.0 里面 ... -
Android为应用添加角标(Badge)
2017-03-30 11:21 62061.需求简介 角标是什么意思呢? 看下图即可明了: 可 ... -
Android端与笔记本利用局域网进行FTP通信
2017-03-23 10:17 995先看图 打开前: 打开后: Activity类 ... -
PorterDuffColorFilter 在项目中的基本使用
2017-03-03 10:58 1368有时候标题栏会浮在内容之上,而内容会有颜色的变化,这时候就要求 ... -
ColorAnimationView 实现了滑动Viewpager 时背景色动态变化的过渡效果
2017-02-24 09:41 2236用法在注释中: import android.anima ... -
迷你轻量级全方向完美滑动处理侧滑控件SlideLayout
2017-01-16 16:53 2608纯手工超级迷你轻量级全方向完美滑动处理侧滑控件(比官方 sup ... -
Effect
2017-01-05 09:57 0https://github.com/JetradarMobi ... -
动态主题库Colorful,容易地改变App的配色方案
2016-12-27 14:49 2581Colorful是一个动态主题库,允许您很容易地改变App的配 ... -
对视图的对角线切割DiagonalView
2016-12-27 14:23 1130提供对视图的对角线切割,具有很好的用户定制 基本用法 ... -
仿淘宝京东拖拽商品详情页上下滚动黏滞效果
2016-12-26 16:53 3519比较常用的效果,有现成的,如此甚好!:) import ... -
让任意view具有滑动效果的SlideUp
2016-12-26 09:26 1720基本的类,只有一个: import android.a ... -
AdvancedWebView
2016-12-21 09:44 16https://github.com/delight-im/A ... -
可设置圆角背景边框的按钮, 通过调节色彩明度自动计算按下(pressed)状态颜色
2016-11-02 22:13 1937可设置圆角背景边框的的按钮, 通过调节色彩明度自动计算按下(p ... -
网络请求库相关
2016-10-09 09:35 62https://github.com/amitshekhari ... -
ASimpleCache一个简单的缓存框架
2015-10-26 22:53 2193ASimpleCache 是一个为android制定的 轻量级 ... -
使用ViewDragHelper实现的DragLayout开门效果
2015-10-23 10:55 3439先看一下图,有个直观的了解,向下拖动handle就“开门了”: ... -
保证图片长宽比的同时拉伸图片ImageView
2015-10-16 15:40 3747按比例放大图片,不拉伸失真 import android. ...
相关推荐
在这个主题中,我们将深入探讨如何实现ListView中的搜索关键字高亮显示功能。 首先,我们需要理解搜索功能的基本原理。在Android应用中,通常会有一个搜索框(EditText)供用户输入关键字,当用户输入内容时,我们...
要实现关键字高亮,我们可以遵循以下步骤: 1. **创建自定义Adapter**:首先,你需要创建一个自定义的Adapter,继承自BaseAdapter或ArrayAdapter。在自定义Adapter中,我们需要重写`getView()`方法,因为这是决定每...
在某些场景下,我们可能需要对ListView中的每一项(item)进行特定的文本处理,比如高亮显示某个关键词、添加下划线以及监听点击事件。在这个案例中,我们将详细探讨如何实现这些功能。 首先,我们需要创建一个...
要实现高亮显示,我们需要在`Adapter`的`bindViewHolder()`方法中,根据查询关键字对数据进行处理,然后更新对应的视图元素(如TextView)以突出显示匹配的文本。 具体实现步骤如下: 1. 创建`SearchView`实例并...
为了高亮显示匹配部分,可以修改ListView项的布局,设置一个可变颜色的SpannableString,使关键词在显示时以特殊颜色突出。 接下来,我们关注AndroidManifest.xml文件,这是应用配置的核心。在这里,你需要声明你的...
设置是否整行选择模式,当设置为 True 时,当点击某行时能整行高亮显示,不然只会选择该行的第一列。默认值 False。只有在 lvwReport 视图该属性才有意义。 2. GridLines:设置是否显示网格线。默认值 False。只有...
高亮显示关键字是在搜索结果中突出显示与用户输入相匹配的部分,以提高可读性。在Qml中,我们可以利用`Text`元素的样式属性,如`font.bold`或自定义CSS样式来实现高亮效果。在搜索结果显示时,需要动态地修改这些...
4. 反馈:在ListView中,可以使用HeaderView和FooterView来增强用户体验,例如显示当前选中的字母,以及高亮显示对应的首字母索引条目。 四、优化与性能 1. 使用ViewHolder模式:为了提高ListView的滚动性能,推荐...
第7章 数据绑定控件 300 7.1 数据绑定技术 301 实例188 格式化订货金额和订单日期并 进行绑定 301 实例189 使用绑定表达式高亮显示搜索关键字 302 ...实例243 高亮显示ListView中的数据行并实现 图片自动变换 384
在Adapter的`onBindViewHolder()`方法中,根据接收到的key值,遍历每个Item的数据,使用StringFormatUtil或其他类似工具,将匹配的关键字高亮显示。这通常涉及到字符串操作,比如使用`indexOf()`查找关键字位置,...
为了实现高亮显示,我们需要在搜索结果列表的适配器(如RecyclerView或ListView)中处理数据。当用户输入搜索关键词时,可以遍历列表项,找出与关键词匹配的部分,并使用SpannableString和 ForegroundColorSpan 或者...
本文将探讨如何通过两种不同的方法实现关键字匹配并改变显示颜色,这是提升用户体验的有效手段。在描述中提到的“二种方式,匹配关键字、改变颜色.zip 匹配搜索关键字改变颜色.rar”可能包含示例代码或项目,但具体...
- **功能**: 设置或返回是否整行高亮显示。 - **值**: - `True`: 整行高亮。 - `False`: 单元格高亮。 **12. HotTracking** - **功能**: 设置或返回是否启用热点跟踪,鼠标指针变为手形。 - **值**: - `True`: ...
自动选择意味着当用户展开ComboBox时,根据特定条件(如当前焦点或搜索关键字)自动高亮一个合适的选项。自动滚屏则确保当前选中的项目始终可见,即使列表内容过多导致滚动。 在实现这些特性时,我们需要使用WPF的...
首先,我们需要了解Android的基本组件,如EditText用于用户输入查询关键字,ListView或RecyclerView则用来展示过滤后的结果。在创建自定义控件时,我们可能需要结合这两个组件,构建一个一体化的搜索框和结果显示区...