2011-03-23 5 views
0

난 내 ExpandedListView에 아이 클릭 리스너를 설정하기 위해 노력하고있어, 나는 이상한 결과를 받고 있어요 : 그것은 일종의 작동안드로이드 OnClickListener를 이상한 행동

theList.setOnChildClickListener(new OnChildClickListener() { 
    @Override 
    public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { 
     Log.i(LOG_TAG, "clicked"); 

     ExpandableListAdapter adapter = parent.getExpandableListAdapter(); 
     View v = (View)adapter.getChild(groupPosition, childPosition); 

     Toast toast = Toast.makeText(getApplicationContext(), 
       "item: " + new Integer(groupPosition).toString() + ":" + new Integer(childPosition).toString(), 
       Toast.LENGTH_SHORT); 
     toast.show(); 

     if (!((CheckedTextView)view.findViewById(R.id.check)).isChecked()){ 
      ((CheckedTextView)view.findViewById(R.id.check)).setChecked(true); 
     } else { 
      ((CheckedTextView)view.findViewById(R.id.check)).setChecked(false); 
     } 

     return true; 
    } 
}); 

. 그러나 항목 중 하나를 선택하면 추가로 다른 항목이 무작위로 선택됩니다. 이 일을 올바르게하지 않습니까?

+0

여전히이 문제가 발생했습니다. 며칠되었습니다. 다른 사람들도이 문제를 겪고 있음을 알고 있지만 해결책을 찾지 못했습니다. – moonlightcheese

+0

체크 된 항목은 목록에서 위아래로 스크롤 할 때 실제로 임의의 다른 위치로 변경됩니다. 예를 들어 그룹 0을 드롭 다운하고 항목 0을 클릭하면 해당 항목이 체크되지만 그룹 2를 풀다운 할 때 항목 5가 클릭되지만 위의 경우 그룹 0 항목 0은 선택 취소되고 항목 3 그 그룹에서 이제 선택됩니다. 여기에서 내 머리카락을 꺼내. 이것은 말이되지 않습니다. 이 정확한 코드는 ExpandableListActivity를 사용하는 다른 예제에서 작동합니다. – moonlightcheese

답변

0

직접 문제가 해결되었습니다. 나는 어댑터 클래스를 확장하고 getChildView와 getGroupView를 오버라이드하고 체크 표시를 유지하기 위해 어댑터에 부울리스트를 추가했다. 아마도 가장 정교한 솔루션은 아니지만 완벽하게 작동합니다.