2010-07-13 6 views
4

J'ai un ListView qui montre le mot le plus proche d'une recherche.Android ListView center selection

Par exemple, si je recherche "salut" Je reçois les résultats suivants dans le ListView


...
salut
salut cinq
salut-cinq
haute
fort
....

J'utilise

ListView.setSelection(wordList.indexOf(searchWord)); 
ListView.setSelected(true); 

Le code ci-dessus place le mot sélectionné "hi" en haut et ne met pas en surbrillance la sélection.

Je souhaite que le «hi» soit positionné au centre, sélectionné et mis en surbrillance automatiquement. Voir ci-dessous

...
bonjour bonjour
il
salut
salut-cinq
salut cinq
...

Quel code puis-je utiliser pour obtenir ce qui précède?

Merci beaucoup.

+0

Je cherche aussi un moyen de centrer une ListView ... –

+0

avez-il fait? U peut afficher le code – MRX

Répondre

-1

Essayez ceci:

ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     // When clicked, show a toast with the TextView text 
     Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
      Toast.LENGTH_SHORT).show(); 
    } 
    }); 

pour plus d'informations: http://developer.android.com/resources/tutorials/views/hello-listview.html

0

essayer setSelectionFromTop() que vous aurez à faire le calcul vous-même. setSelection() amène l'élément sélectionné en haut de la vue, ce que vous voyez.

1
ListView view = (ListView)findViewById(R.id.YourListView); 

int height = view.getHeight(); 
int itemHeight = view.getChildAt(0).getHeight(); 
view.setSelectionFromTop(position, height/2 - itemHeight/2); 

La position (int) est le listitem que vous voulez centrer dans le listview !!

+1

view.getHeight() peut retourner 0 – AFD

0

essayez ceci. d'abord, obtenir le nombre d'élément visible de listview

int count=0; 
for (int i = 0; i <= listview.getLastVisiblePosition(); i++) 
{ 
    if (listview.getChildAt(i)!= null) 
    { 
     count++; 
    } 
} 

En second lieu, faire défiler l'élément au centre de listview.

int target = position-count/2; 
if (target<0) target = 0; 
listview.setSelection(target);