Выбор центра Android ListView

У меня есть ListView, который показывает соответствие ближайшего слова поиску.

Например, если я ищу "привет", я получаю следующие результаты в ListView


...
привет
привет пять
привет-пять
высокая
выделить
....

Я использую

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

Приведенный выше код помещает выбранное слово "hi" вверху и не выделяет выделение.

Я хочу, чтобы "hi" был расположен по центру, выбран и выделен автоматически. См. Ниже

...
привет
привет там
привет
привет-пять
привет пять
...

Какой код можно использовать для достижения вышеуказанного?

Большое спасибо.

Ответ 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);

Позиция (int) - это список, который вы хотите центрировать в списке!

Ответ 2

попробуйте setSelectionFromTop(), вам придется самому заниматься математикой. setSelection() приведет выбранный элемент к вершине представления, что вы видите.

Ответ 3

попробуйте это. во-первых, получить видимое количество элементов списка.

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

второй, прокрутите элемент до центра списка.

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

Ответ 4

Попробуйте следующее:

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

для получения дополнительной информации: http://developer.android.com/resources/tutorials/views/hello-listview.html