2013-08-06 18 views
1

我有TextView的項目水平的ListView,我項目佈局:Android的ListView中選定的項目突出

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/LinearLayHorizontal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="?android:attr/activatedBackgroundIndicator"> 

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" > 
</TextView> 

<View 
    android:layout_width="5dp" 
    android:layout_height="35dp"/> 

</LinearLayout> 

我想通過設置borded給它僅強調一個選擇項的TextView的,如。當我點擊item1時,我想看到帶有小邊框的這個項目,現在當我點擊item2時 - 這將突出顯示,並且item1的邊框將消失。

任何想法?

在此先感謝!

+0

使用'ListView.getSelected()'應該返回列表項查看您想要突出顯示,找到其中的「TextView」,更改邊框並記住它以在選擇其他項目時重置邊框 –

回答

0
  • 可能是你需要屬性來存儲最後的高亮項目。
    等:

    查看lastHighlightItem = null;

  • 覆蓋onItemClick方法。
    等:

onItemClick(適配器視圖父,觀景,INT位置,長的id){

 if(lastHighlightItem!=null) 
      lastHighlightItem.recover(); 
     //recover unHighlight state 
     view.highlight();//Highlight as you like 
     lastHighlightItem = view; 

}

2

在您的活動創建一個私有的類象如下:

private class ListChoice 
{ 
    private int value; 

    public ListChoice() 
    { 
     value = -1; 
    } 

    public void setListChoice(int v) 
    { 
     value = v; 
    } 

    public final int getListChoice() 
    { 
     return value; 
    } 
} 

在setOnItemClickListener設置點擊排

listView.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    { 
     listChoice.setListChoice(position); 
     adapter.notifyDataSetChanged(); 
    } 
}); 

在ListView適配器使用它來突出或禁用亮點

@Override 
public View getView(final int position, View convertView, ViewGroup parent) 
{ 
    ...... 
    if(position == listChoice.getListChoice()) 
    { 
     //highlight clicked item 
    } 
    else 
    { 
     //disable highlight for the rest of items 
    } 
    ...... 
}