2012-10-12 4 views
6

내 응용 프로그램에는 목록보기가 포함 된 왼쪽 창이 있습니다. 이 목록보기에서 선택한 내용은 오른쪽 창과 활동의 다른 링크 및 요소를 업데이트하는 관련 데이터를 호출합니다. 이 디자인으로 인해 나머지 활동에 유용한 값을 제공하기 위해 왼쪽 분할 창의 선택이 항상 이루어져야합니다.안드로이드 : 프로그래밍 방식으로 클릭 목록보기 항목을 선택한 상태로 설정

내 활동의 onCreate 메소드에서 기본적으로 목록의 첫 번째 요소를 선택하기 위해 다음을 호출합니다. (programList는 내 목록보기입니다.)

모든 것이 잘 작동하고보기가 올바른 값으로 예상대로로드됩니다 (단 하나만 제외).

선택한 요소를 강조 표시하는 목록 뷰어에 드로어 블 선택기를 추가했습니다. 항목을 에뮬레이터에서 실제로 클릭하면 강조 표시됩니다 (나는 CHOICE_MODE_SINGLE을 (를) 사용하고 있습니다.) performItemClick()을 호출 할 때 강조 표시하지 않습니다. 나는 stackoverflow에 대한 도움을 둘러 보았고 클릭하기 전에 다음을 사용하려고 시도했지만 차이는 발생하지 않았습니다. setSelection 방법은 터치 인터페이스에서 항목의 상태를 설정하지 않는 것처럼 소리, 그리고 내 결과에서이 performItemClick 방법 중 하나를하지 않는 것 같다 API를 읽는에서

programList.requestFocusFromTouch(); 
    programList.setSelection(0); 

. 나는 또한 그럼 난 텍스트 뷰의 상태를 읽고이 선택되어 있는지 볼 수 있습니다

programList.getAdapter().getView(0, null, null).setSelected(true); 

을 사용하려고하지만 또한 화면에 표시되는 내용을 변경할 수 아무것도하지 않았다.

버튼의 상태가 다르게 그려지는 것을 방지하는 항목이 onCreateMethod에 있습니까? 나는 개별 텍스트보기 내부 drawable 무효화하고 텍스트보기 자체를 무효화했는데 도움이되지 않았다. 또한 텍스트보기의 배경을 변경해 보았지만 설정 한 선택 도구가이를 제어하거나 앞에 그려지는 것처럼 보입니다. getText를 사용하여 내용을 읽었 기 때문에 올바른 textView가 있다는 것을 알고 있습니다.

누구든지이 문제에 대해 도움을 주거나 해결책을 제시해 주면 큰 도움이됩니다.

답변

4

트릭은 어댑터의 getView() 메서드를 무시하는 것입니다. 이것을 시도하십시오 :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final View renderer = super.getView(position, convertView, parent); 
    if (position == index_of_selected_item) { 
     renderer.setBackgroundResource(android.R.color.darker_gray); 
    } 
    return renderer; 
} 

물론, 배경색을 "활성"항목임을 나타내는 모든 색상으로 설정할 수 있습니다.

+0

감사합니다. listview.setSelector() 메서드를 사용하여이 작업을 수행 할 수있는 방법이 있습니까? 아니면 getView()를 사용하여 나머지 상태를 설정해야합니까? SetSelector는 xml 리소스를 사용하여 훨씬 편리합니다. 에뮬레이터에서 마우스를 클릭 할 때와 클릭 이벤트를 프로그래밍 방식으로 호출 할 때 어떤 일이 발생하는지에 대해 다르게 알았 으면합니다. – ndw

+0

귀하의 명세서에 다른 항목을 추가하고 다른 색상으로 설정해도 항목 선택을 취소 할 수 없습니다. 보기 가져 오기는보기가로드 될 때만 처음에 호출됩니다. 해당 목록보기 항목의 배경이 설정되면 그 방법으로 유지됩니다. [this] (http://stackoverflow.com/questions/10296846/android-listview-select-first-item-after-loading-datas) 가깝지만, 그의 설명은 불완전합니다. – ndw

+2

어떻게 index_of_selected_item 값을 얻을 수 있습니까? – Dimitri

관련 문제