【问题标题】:Is it possible to add long press listener to CheckBoxPreference?是否可以将长按侦听器添加到 CheckBoxPreference?
【发布时间】:2014-02-26 19:07:43
【问题描述】:

thread 中的答案没有任何帮助。
我有一个要求,I want to do something when user long presses on CheckBoxPreference。我在活动中动态创建 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);    

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

用上面的代码可以实现吗?
我也将欣赏任何替代解决方案。但是,我更喜欢第一种方法。

【问题讨论】:

    标签: android listener preferenceactivity checkboxpreference


    【解决方案1】:

    我不确定 CheckBoxPreference 是否有长按组件。您可能想要评估您的 UX,看看您是否可以用不同的 UI 组件替换该操作。也许这是一个常规的偏好,当点击打开您的详细信息以及可以选中的复选框。

    如果这不符合您的需要,您可以手动创建复选框视图,以自动加载/更新共享首选项对象。我相信标准视图复选框可以长按。由于我从未直接尝试过长按复选框,因此可能需要对其进行采样。如果不能,您可能需要创建一个复选框和一个包含要长按的文本的单独组件。

    【讨论】:

      【解决方案2】:

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

      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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2013-02-17
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 2011-07-20
        相关资源
        最近更新 更多