2014-02-26 2 views
1

thread의 대답은 어떤 식 으로든 도움이되지 않습니다.
하나의 요구 사항이 있습니다. I want to do something when user long presses on CheckBoxPreference. 동적으로 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);  

내가 달성하기 위해 노력하고 무엇에 : 나는보기를 채울 코드 조각 아래에 사용하고?
데이터베이스에 몇 개의 항목이 있습니다. 데이터베이스의 각 항목에 해당하는 체크 박스 목록을 채우고 싶습니다 (위의 코드로 수행 할 수 있습니다). 이제는 사용자가 오랫동안 모든 체크 상자를 누르면 뭔가해야합니다 (대화 상자 열기).

위의 코드로이 작업을 수행 할 수 있습니까?
나는 또한 다른 해결책을 제공 할 것입니다. 그러나 나는 첫 번째 접근 방식을 선호한다.

답변

0

나는 이것을 할 수 있었다. 아래 트릭은 나를 위해 작동합니다.

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

CheckBoxPreference에 길게 누르는 구성 요소가 있는지 여부는 확실하지 않습니다. UX를 ​​평가하여 다른 UI 구성 요소로 조치를 바꿀 수 있는지 확인하는 것이 좋습니다. 아마도 클릭 할 때 체크 할 수있는 확인란뿐만 아니라 세부 정보가 열리는 규칙적인 환경 설정 일 것입니다.

사용자의 요구에 맞지 않는 경우 공유 환경 설정 개체를 자동으로로드하거나 업데이트 할 수있는 확인란보기를 수동으로 만들 수 있습니다. 나는 표준보기 확인란이 오래 눌러 질 수있는 능력이 있다고 생각한다. 오래 전에 직접 확인란을 눌러 본 적이 없기 때문에 샘플로 추출 할 수도 있습니다. 그럴 수 없다면 오랫동안 눌러야 할 텍스트가 들어있는 별도의 구성 요소와 확인란을 만들어야 할 수도 있습니다.

관련 문제