2010-06-06 2 views
6

나는 꽤 복잡한 ListView입니다. 내 활동에HorizontalScrollView를 사용하여 ListView 항목을 클릭 할 수 없습니다.

> LinearLayout (vertical) 
    > LinearLayout (horizontal) 
    > include (horizontal LinearLayout with two TextViews) 
    > include (ditto) 
    > include (ditto) 
    > TextView 
    > HorizontalScrollView (this guy is my problem) 
    > LinearLayout (horizontal) 

, 항목이 생성됩니다 (getView()가 호출) 내가 (다른 간단한 물건을 작성 외에)를 HorizontalScrollView 내부 LinearLayout 동적 TextView의 추가 : 각 항목은 다음과 같이 보입니다. 놀랍게도 성능은 꽤 좋습니다.

제 문제는 HorizontalScrollView을 추가 할 때 목록 항목이 끊어지지 않게되었습니다. 그들은 클릭했을 때 오렌지 배경을 얻지 않으며 그들은 OnItemClickedListener을 발사하지 않습니다 (간단한 Log.d 전화를하기 위해).

목록 항목을 다시 클릭 할 수있게하려면 어떻게해야합니까?


편집 : 최상위 LinearLayoutandroid:descendantFocusability="blocksDescendants" 설정가 작동하는 것 같다. 다른 방법이 있는지 알고 싶습니다. 목록 항목에 집중할 수있는 항목을 원한다면 어떻게해야합니까?

답변

8

android:descendantFocusability="blocksDescendants"을 맨 위에 사용하면 LinearLayout 트릭을 만들었습니다. 내부의 요소는 여전히 '클릭 가능'으로 만들 수 있습니다. 즉, 포커스가 맞지 않습니다 (즉, 터치 스크린이 아닌 기기에서는 클릭 할 수 없음). 나를 위해 충분하다. 난 내 TableLayout을 스크롤에 HorizontalScrollView를 적용 할 때 목록 항목을 클릭 미세하지만없는 노력

0

는 내 레이아웃이있는 LinearLayout HorizontalScrollView TableLayout을 .........

을 follwos대로 descendantFocusability = "blocksDe/TableLayout을 /HorizontalScrollView /LinearLayout을

난 로이드인가 scendants "를 내 최고의 가장 직선적 인 레이아웃으로 바꾼다.

0
android:descendantFocusability="blocksDescendants" 

나는 도움이되지 못했다. 그래서

그래서 청취자 patern을 알게되었습니다.

public interface EventListItemOnClickListener { 
    public void itemClicked(); 
} 

그리고 어댑터

모든 청취자에게 통지

private List<EventListItemOnClickListener> listeners; 
protected void notifyOnClick(int position){ 
    for(int i=0; i<listeners.size();++i) 
    listeners.get(i).itemClicked((Event)events.get(position)); 
} 
... 
    @Override 
    public void onClick(View v) { 
     notifyOnClick(position); 
    } 
... 
관련 문제