博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Preference 实现长按监听 long-clickable
阅读量:4684 次
发布时间:2019-06-09

本文共 1864 字,大约阅读时间需要 6 分钟。

近期在开发项目中,碰到一个小小的技术难题。UI要求在settings配置项中实现部分配置项的动态添加、编辑以及删除。因此需要实现Preference长按弹出上下文菜单,再选择编辑或者删除。Preference是Android传为settings界面准备的组件,定制度较高,没有提供长按或者是注册上下文监听的监听函数,调研一段时间之后,在stackoverflow上找到一个可行方案,在此记录。

 

Preference实现了onClick()方法,但没有方法用来接收onLongClick()事件。事实上,PreferenceActivity是一个ListActivity,因此我们可以通过ListActivity的getListView()或者每一个View。直接对每一个View注册上下文菜单的话,会使所有Preference配置项长按都会弹出上下文菜单,不符合我们的需求(我们的项目中,部分配置项是写死的,部分是需要用户定制的),因此采用如下方案:

1 public class TestActivity extends PreferenceActivity { 2     @Override 3     protected void onCreate(Bundle savedInstanceState) { 4  5         super.onCreate(savedInstanceState); 6  7         addPreferencesFromResource(R.xml.account_options_prefs); 8  9         ListView listView = getListView();10         listView.setOnItemLongClickListener(new OnItemLongClickListener() {11             @Override12             public boolean onItemLongClick(AdapterView
parent, View view, int position, long id) {13 ListView listView = (ListView) parent;14 ListAdapter listAdapter = listView.getAdapter();15 Object obj = listAdapter.getItem(position);16 if (obj != null && obj instanceof View.OnLongClickListener) {17 View.OnLongClickListener longListener = (View.OnLongClickListener) obj;18 return longListener.onLongClick(view);19 }20 return false;21 }22 });23 }24 }

关键代码见标红的部分。

 

之后建立继承Preference的新类,凡是实现了View.OnLongClickListener 接口的类,都可以对长按进行响应,代码如下:

1 public class TestPreference extends CheckBoxPreference implements View.OnLongClickListener {2 3     @Override4     public boolean onLongClick(View v) {5         // Do something for long click6         return true;7     }8 }

如此,即可实现部分Preference配置项对长按事件进行相应的需求。

转载于:https://www.cnblogs.com/xutao1988/archive/2012/05/05/2484730.html

你可能感兴趣的文章
SQL函数学习(十六):STUFF()函数
查看>>
Apache Hadoop 和Hadoop生态圈
查看>>
Ctrl+Enter 选中文本提交
查看>>
android WIFI
查看>>
常用的匹配正则表达式和实例
查看>>
小组成员及其git链接
查看>>
SQL case when else
查看>>
MVc Identity登陆锁定
查看>>
cdn连接失败是什么意思_关于CDN的原理、术语和应用场景那些事
查看>>
ultraedit26 运行的是试用模式_免费试用U盘数据恢复工具 – 轻松找回U盘丢失的各种数据!...
查看>>
python sum函数导入list_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
查看>>
UVa540 Team Queue
查看>>
android 练习之路 (八)
查看>>
tp5 中 model 的聚合查询
查看>>
android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications...
查看>>
压缩文件函数库(转载)
查看>>
【转】ubuntu12.04没有/var/log/messages解决
查看>>
Oracle EBS 初始化用户密码
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>