2012-04-11 4 views
3

ListView에 문제가 있습니다. 내가 가지고있는 사용자 정의 드로어 블을 선택했을 때 선택한 항목의 배경을 변경하고 싶지만 작동하지 않습니다.ListView 선택한 항목 드로어 블

은 내가 selectedItem가

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
      android:drawable="@drawable/selected_item"/> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

에게로 이미지에서와 같이이 효과를 갖고 싶어 그리고 이것은 list_row의 텍스트

<!-- this layout is used to view row of category list and resturant list --> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/txt_category_row" 
    android:gravity="center" 
    android:layout_width="match_parent" 
    android:textColor="@color/BLACK" 
    android:layout_height="55dp" 
    android:padding="10dp" 
    android:text="@string/hello" 
    android:layout_marginTop="5dp" 

    android:textAppearance="?android:attr/textAppearanceLarge" /> 

그리고이 ListView에 code.xml입니다 :

<ListView android:id="@+id/list_category" 
    android:layout_alignParentLeft="true" 
    android:layout_height="fill_parent" 
    android:layout_width="184dp" 
    android:dividerHeight="2px" 
    android:background="@android:color/transparent" 
    android:cacheColorHint="@android:color/transparent" 
    android:layout_marginTop="5dp" 
    android:listSelector="@drawable/list_selector" 
    android:divider="@color/Gray" > 

답변

-2
dynamicListView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     //arg1 will give you that view 
     arg1.setBackgroundColor(Color.BLUE); 
    } 
}); 
+0

이 작품의하지만 난 다른 항목을 선택하면 유 ..can 선택한 brevious보기 숙박 – Basant

10

터치 모드에서는 선택되거나 초점이 맞춰진 상태가 없습니다.

그러나 확인란을 선택하지 않아도 선택 상태를 유지하고이를 사용하여 "선택"할 때 속성을 변경할 수 있습니다.

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

그런 다음 당신의 국가 목록 XML에서 변경할 : 이것에

android:state_selected="true" 

:

을 당신이 목록보기를 정의 한 후 목록이 줄을 추가 표시하도록 설정 당신의 자바 코드에서 그래서
android:state_activated="true" 

지금 당신은이 있어야합니다

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" 
     android:drawable="@drawable/selected_item"/> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

그리고 마지막으로, 당신의 선택 파일을 가리 키도록 행보기의 배경을 설정합니다

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/txt_category_row" 
    android:gravity="center" 
    android:layout_width="match_parent" 
    android:textColor="@color/BLACK" 
    android:layout_height="55dp" 
    android:padding="10dp" 
    android:text="@string/hello" 
    android:layout_marginTop="5dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:background="@drawable/item_selector" /> 

당신은 내가 그냥 "item_selector"를 사용하여 상태 목록 XML의 이름을 포기하지 않았다. 실제로 그 파일의 이름이 무엇이든 대체해야합니다.

+0

아무것도 나와 함께 작동하지 않습니다 도움이 .. 내가 그것으로 선택한 항목을 떠나고 싶어 내 문제는 이후 새로운 배경이다 선택과 내가 그것을 바꿀 위치를 바꿀 때 그것과 텍스트 색상으로 변경됩니다 .. 어떤 도움을 주시기 바랍니다 : (( – Basant

+0

그래서 당신은 여러 사람을 원하십니까? 따라서 그것을 CHOICE_MODE_MULTIPLE에 (나는 그것이 맞는 것 같아요, 난 집에 없어 – Barak

+0

당신이 나를 오해하지 않는 이유는 내가 아이템을 선택했을 때 그 배경과 텍스트 색상이 다른 아이템을 선택할 때까지 바뀌 었음을 의미합니다. 새로운 선택된 아이템은 배경과 텍스트 컬러의 효과를 취합니다. 오래된 항목 정상이 됐어. 내가 선택한 항목이 내가 그것을 선택할 때 나타나고 내 손가락을 제거하면 없어 졌어.이 문제를 해결하는 데 도움이된다. 고마워. – Basant

1

목록 항목보기로 CheckableFrameLayout을 사용해야합니다. 여기에서 찾을 수 있습니다 - CheckableFrameLayout

목록 항목을 클릭하면 배경 drawable이 원하는 것으로 바뀝니다.