2013-08-06 4 views
1

У меня есть горизонтальный ListView с элементами TextView, мой предмет расположение: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
  • Возможно, вам понадобится имущество для хранения последнего элемента подсветки.
    И т.д.:

    Просмотреть последние HighlightItem = null;

  • Overwrite onItemClick способ.
    Etc:

onItemClick (AdapterView родитель, Вид вид, внутр позиция, длинный идентификатор) {

 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(); 
    } 
}); 

В адаптере списка следует использовать его, чтобы выделить или отключить изюминку

@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 
    } 
    ...... 
}