2013-10-16 43 views
1

我有自定義適配器視圖的問題。 我嘗試,在Click事件中更改背景view。 我有AdapterView.OnItemClickListener,從哪裏獲得所選的項目,並呼籲myListView.invalidate();自定義適配器,選定的項目背景

無效後,調用adapters getView(...)。下面這段代碼:

@覆蓋 公共查看getView(INT位置,查看convertView,ViewGroup以及母公司){

View row = convertView; 
    ProjectAdapterData projectItem; 


    if (row == null) { 

     LayoutInflater inflater = LayoutInflater.from(context); 
     row = inflater.inflate(R.layout.project_small_item_layout, null); 

     ProjectAdapterData projectAdapterData = new ProjectAdapterData(); 

     row.setTag(projectAdapterData); 
     name = (TextView)row.findViewById(R.id.txtObjectName); 
     if (objectData[position].Name!= null) 
      name.setText(objectData[position].Name); 
     adress = (TextView)row.findViewById(R.id.txtObjectAdress); 
     if (objectData[position].Adress != null) 
      adress.setText(objectData[position].Adress); 
    } 
    else { 
     background = (RelativeLayout)row.findViewById(R.id.rlProjectBackground); 
     if (objectData[position].isSelected) 
      background.setBackgroundColor(context.getResources().getColor(R.color.cProjectSelected)); 
     else 
      background.setBackgroundResource(R.color.cProjectUnSelected); //it's calls, but no result 
     row.invalidate(); 
    } 
    return row; 
} 

我的問題,爲什麼背景不發生變化?

我selector_list

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_selected="true" 
      android:color="@color/cProjectSelected"/> 
     <item android:state_selected="false" 
      android:color="@color/cProjectUnSelected"/> 
    </selector> 

回答

10

您可以使用選擇器高亮項目

在繪製文件夾中創建XML文件

list_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> 

    <item android:drawable="@color/blue" android:state_activated="true"/> 
    <item android:drawable="@color/blue" android:state_selected="true"/> 
    <item android:drawable="@color/transparent"/> 

</selector> 

,並設置listSelector在xml爲您的列表視圖,如

android:listSelector="@drawable/list_selector" 

color.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <color name="BLACK">#000000</color> 
    <color name="WHITE">#FFFFFF</color> 
    <color name="light_grey">#a5acb0</color> 
    <color name="brown">#525964</color> 
    <color name="dark_grey">#212121</color> 
    <color name="aqua">#a6b1ba</color> 
    <color name="red_cherry">#C9282D</color> 
    <color name="silver">#A9A9A9</color> 
    <color name="black">#000000</color> 
    <color name="transparent">#00000000</color> 
    <color name="white">#FFFFFF</color> 
    <color name="blue">#00aceb</color> 
    <color name="spiritclips_bck">#8AB8E0</color> 
    <color name="translucent_black">#55000000</color> 
    <color name="grid_bck">#627583</color> 
    <color name="grey">#393430</color> 
    <color name="dark_grey_bg">#1f1c17</color> 
    <color name="login_font_color_1">#546778</color> 
    <color name="login_font_color_2">#8E8E8E</color> 
    <color name="blue_txt">#0f5690</color> 

</resources> 

爲custom_list_item佈局應該是

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="?android:attr/activatedBackgroundIndicator" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="20sp" 
     android:textStyle="bold" /> 

</LinearLayout> 

和應用程序的最低版本應該是11

enter image description here

+0

a無法從可繪製文件夾訪問@color – Vitaliy

+1

您應該在值文件夾中創建color.xml併爲您的佈局定義顏色 – kId

+0

我已在值中使用color.xml,但無法訪問它。我只能訪問android:@drawable – Vitaliy