是否可以将长按侦听器添加到复选框首选项



这个线程中的答案没有任何帮助。
我有一个要求,I want to do something when user long presses on CheckBoxPreference.我正在活动内动态创建复选框首选项。我正在使用以下代码段来填充视图:

m_PreferenceScreen = getPreferenceManager().createPreferenceScreen(this);    
m_PreferenceCategory = new PreferenceCategory(this);    
m_CheckBoxPreference = new CheckBoxPreference[m_Cursor.getCount()];
int i = 0;    
while (m_Cursor.moveToNext()) {    
    //Create checkbox instances here    
    m_CheckBoxPreference[i].setOnPreferenceChangeListener(this);     
    m_PreferenceCategory.addPreference(m_CheckBoxPreference[i++]);    
}    
setPreferenceScreen(m_PreferenceScreen);    

我想实现什么?
我在数据库中的条目很少。我想填充一个对应于数据库中每个条目的复选框列表(我可以使用上面的代码做到这一点)。现在我的要求是,当用户长按任何复选框时,它应该做一些事情(比如,打开一个对话框)。

用上面的代码做这件事吗?
我也会感谢任何替代解决方案。 但是,我更愿意采用第一种方法。

我不确定复选框首选项是否有长按组件。 你可能想要评估 UX,以查看是否可以将操作替换为其他 UI 组件。 也许这是一个常规首选项,当单击打开您的详细信息以及可以选中的复选框时。

如果这不符合您的需求,您可以手动创建可以自动加载/更新共享首选项对象的复选框视图。 我相信标准视图复选框具有长按的能力。 这可能是可以采样的东西,因为我从未直接尝试过长时间按下复选框。 如果不能,则可能需要创建一个复选框和一个单独的组件,其中包含要长按的文本。

我设法做到了。下面的技巧对我有用。

ListView listView = getListView();
listView.setOnItemLongClickListener(this);
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    ListView listView = (ListView) parent;
    ListAdapter listAdapter = listView.getAdapter();
    Object obj = listAdapter.getItem(position);
    if (obj != null && obj instanceof View.OnLongClickListener) {
        View.OnLongClickListener longListener = (View.OnLongClickListener) obj;
        return longListener.onLongClick(view);
    }
    return false;
}

相关内容

  • 没有找到相关文章

最新更新