2013-12-16 3 views
0

Android 개발에 새로운 것이고 나는 Google에서 쓰레기를 버리고 확실한 답을 찾을 수 없다는 의문을 가지고 있습니다.ListView 위치가 언제 변경되는지 확인

간단히 ListView의 위치가 변경 될 때를 결정하는 방법을 알고 싶을뿐입니다. 특히 TextView 텍스트를 클릭 할 때 색상이 변경되는 ListView가 있습니다. 문제는 ListView에서 다른 위치를 클릭하면 방금 있던 위치의 텍스트 색상이 변경된 상태로 유지된다는 것입니다.

기본적으로 ListView에서 위치 변경 내용을 수신 한 다음 해당 위치가 변경 될 때 코드를 실행하는 방법이 있습니까?

고맙습니다.

+0

my_color_selector에 대한 귀하의 질문은 명확하지 않다. 시나리오를보다 명확하게 설명하십시오. – Shashika

+0

지금까지 코딩 된 내용은 무엇입니까? – DeathByTensors

답변

1

한 번에 하나의 항목 만 선택하려는 경우 ListView를 설정할 때 선택 모드를 단일로 설정하십시오.

myListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE) 

onItemClickListener를 설정해야합니다.

myListView..setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) { 
     // Your Code Here    
     } 
    }); 

당신이 당신의 ArrayAdapter와를 설정하면 선택한 항목의 배경을 강조 등 simple_list_item_activated_1 같은 기본 안드로이드 항목 레이아웃 중 하나를 사용할 수 있습니다.

myArrayAdapter = new ArrayAdapter<String>(getContext(), 
      android.R.layout.simple_list_item_activated_1, myArrayList); 

배경이 아닌 텍스트 색을 변경하는 것과 같은 사용자 지정 동작을 원할 경우 항목 레이아웃을 자신의 것으로 대체하면됩니다. 기본 Android 항목 레이아웃을보고 작성 방법을 확인하십시오. 예를 들어 기본 Android 항목 레이아웃 android.R.layout.simple_list_item_activated_1은 배경색을 정의하기 위해 activatedBackgroundIndicator이라는 선택자를 사용했음을 알 수 있습니다. 귀하의 경우에는

<Additional>

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
    android:background="?android:attr/activatedBackgroundIndicator" 
    android:minHeight="?android:attr/listPreferredItemHeightSmall" 
/> 

는, 텍스트 색상 대신 배경의 변경을 얻을, 당신은 당신의 텍스트 색상 선택기를 사용하는 것이 좋습니다. res 디렉토리에 color 폴더를 만듭니다. 그것의 선택을 만듭니다

my_color_selector.xml 텍스트의 색상을 설정하여 사용자 정의 항목 레이아웃 그리고

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" android:color="@color/my_red_color /> 
    <item android:drawable="@color/my_blue_color" /> <!-- color when not selected --> 
</selector> 

+0

ListView 항목 중 하나를 클릭하고 선택기에 따라 변경되면 다른 ListView 항목을 클릭 할 때 기본으로 돌아 가게하려면 어떻게해야합니까? 어떻게 ListView 항목에서 강조 표시를 제거하고 이전으로 되돌아 가는지 알아 냈습니다. 그러나 텍스트 색상을 다시 변경하는 방법을 알 수는 없습니다. –

+0

셀렉터 xml을 사용하여 배경색을 정의하기 위해 셀렉터를 사용한 상태에 따라 텍스트 색상을 정의하십시오. –

+0

추가 답변으로 내 답변을 업데이트했습니다. 또한, 대답의 시작 부분에서 말했듯이 한 번에 하나의 항목 만 강조 표시하려면 ListView.CHOICE_MODE_SINGLE을 설정하는 것이 중요합니다. –

관련 문제