1

다음과 같은 문제가 나를 미치게합니다. 이 코드를 사용하여 XML 조각을 정의했습니다 : ListView 내에서 선택 사용

<fragment class="host.helperclass.ServiceListFragment" 
     android:id="@+id/titles" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_width="0px"/> 

가 그럼 난 SherlockListFragment를 확장 ServiceListFragment 클래스를 구현했습니다.

이 코드로는 onActivityCreated 방법을 재정의 한

: list_selector.xml은 매우 간단

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
getListView().setDividerHeight(2); 
getListView().setBackgroundColor(Color.parseColor("#EEEEEE")); 
getListView().setCacheColorHint(Color.parseColor("#00000000")); 
getListView().setSelector(R.drawable.list_selector); 

: 나는를 누를 때

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
     android:drawable="@drawable/green"/> 
    <item android:state_focused="true" 
     android:drawable="@drawable/green"/> 
    <item android:state_selected="true" 
     android:drawable="@drawable/green"/> 
</selector> 

그러나 항목에 대한 녹색 배경에만 추가 단추. 내가 그것을 놓으면 녹색 배경이 제거됩니다. state_selected이 인식되지 않는 것 같습니다. 이것이 가능합니까? 그렇다면 ListView 안에있는 항목을 선택할 수있는 방법이 있습니까?

참고 : 나는 또한 하나 개의 항목으로 selctor를 사용하려고했습니다

:

<item android:state_focused="true" 
     android:drawable="@drawable/green" /> 

그리고 그 결과로 내가 ListView에 항목을 누를 때 배경이 녹색이 ​​될 것으로 obtaint ,하지만 내가 그것을 놓으면 녹색 배경이 제거됩니다. 항목에서 손가락을 떼면 내 항목의 초점이 사라진 것으로 보입니다.

편집 :

나는 또 다른 시도를 만들었습니다.

나는 onListItemClick 방법 내부 코드 줄 추가 한 : 만이 제품을 담은

getListView().setItemChecked(index, true); 

내 XML 선택기에서

:
<item android:state_checked="true" 
     android:drawable="@drawable/green" /> 

그러나 이상하게도이 작동하지 않습니다

합니다.

+0

나는 당신의 질문을 이해하지 못했다. 'state_selected'는 키보드/dpad/트랙볼/etc를 사용하여 항목을 선택했을 때 사용됩니다. ListView를 누르지 않은 경우에도 배경을 녹색으로 유지 하시겠습니까? –

+0

좋아 .. 이해 했어. 내 대답을 확인해. –

답변

0

제거하는 추가합니다. 그래서,

android:background="?android:attr/activatedBackgroundIndicator" 

그러나, activatedBackgroundIndicator는 API 레벨 11부터 도입 된 속성 : 사용자 정의 어댑터에 사용되는 행에 대한 XML 레이아웃을 정의

, 나는 루트 요소로,이 행을 추가하는 데 필요한 이전 버전의 xml을 레이아웃 폴더에 넣었고 새 버전을 layout-v11 폴더에 넣었습니다.

은 또한 다음과 같은 성명은 onListItemClick 방법 안에, 필요합니다

getListView().setItemChecked(position, true); 
1

단일 선택 모드의 올바른 상태는 android:state_activated입니다.

목록에 선택 도구가 사용 된 것으로 나타났습니다.

목록 행 (어댑터에서 사용하는 행)의 배경으로 사용해야합니다. 예를 들어

:

row_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" 
     android:drawable="@drawable/green"/> 
</selector> 

row_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/row_background"> 

    <!-- your views --> 

</LinearLayout> 
+0

@ 베니토, 고맙다. – GVillani82

+0

하지만 상태가 올바르게 눌려 졌을 때 배경이 올바르게 추가되었다고 말한 것입니다. – GVillani82

+0

당신은 답을 찾는데 유용했습니다. 감사합니다. – GVillani82

0

이보십시오.

이 항목은

<item android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/green" /> 

을 선택하고 내가 문제를 발견

<item android:state_selected="true" 
     android:drawable="@drawable/green"/> 
+0

감사합니다. @Abhishek하지만 작동하지 않습니다! :( – GVillani82

+0

이 자습서 참조 http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/ 아이디어를 얻을 수 있습니다. –