附加一个的挑战手势检测器 to a 列表首选项是 2 倍:
- 获取仅在preferences.xml中定义的ListPreference的句柄(即未在Java代码中实例化)。
- ListPreference 既不是 View 也不是 Activity 子类。
是否可以附加一个手势检测器 to a 列表首选项?
如果是这样,人们会怎么做呢?我应该在哪里编写代码来实例化 GestureDetector 并实现侦听器?
除非我没有完全正确地理解这个问题,否则答案可能比你想象的要简单。源代码为ListPreferece
告诉我们它只不过是一个包装器AlertDialog
显示其各种选项ListView
. Now, AlertDialog
实际上可以让你掌握ListView
它会包裹起来,这可能就是您所需要的。
在其中一条评论中,您指出,在这个阶段,您感兴趣的只是检测列表中任何项目的长按。因此,与其通过附加一个来回答这个问题GestureDetector
,我将简单地使用OnItemLongClickListener
.
public class ListPreferenceActivity extends PreferenceActivity implements OnPreferenceClickListener {
private ListPreference mListPreference;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.list_prefs);
mListPreference = (ListPreference) findPreference("pref_list");
mListPreference.setOnPreferenceClickListener(this);
}
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog dialog = (AlertDialog) mListPreference.getDialog();
dialog.getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(getApplicationContext(), "Long click on index " + position + ": "
+ parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
return false;
}
});
return false;
}
}
结果(长按显示的吐司):
参考ListView
,您还可以附加一个OnTouchListener
, GestureDetector
等等,由你决定从这里开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)