У меня есть LinearLayout
, который содержит некоторые другие представления и среди них ListView
.Это представление загружается из другого, нажав кнопку.
Эта кнопка каким-то образом указывает, какой элемент в ListView должен быть первым видимым элементом в списке.Элементы, которые заполняют список, извлекаются через HTTP с внешнего сервера.
Проблема в том, что я могу получить N-й элемент первым в списке.Пожалуйста, обратите внимание, я не хочу перемещать его из текущей позиции в новую, я хочу, чтобы список прокручивался.
Я пробовал с setSelected()
и scrollTo(x,y)
и scrollBy(x,y)
, но безудачи.
Я также попробовал этот кусок кода, как бы он ни был уродлив, но я просто хотел попробовать, чтобы он работал:
ListView categoryList = (ListView)findViewById(R.id.category_list);
categoryList.post(new Runnable() {
@Override
public void run() {
Log.d(this.getClass().getName(), "CategoryActivity.scrollToIndex: " + CategoryActivity.scrollToIndex);
if(CategoryActivity.scrollToIndex>0){
ListView categoryList = (ListView)findViewById(R.id.category_list);
categoryList.setScrollContainer(true);
categoryList.scrollTo(4, CategoryActivity.scrollToIndex * 50);
categoryList.requestLayout();
}
}
});
И это дало мненекоторый успех, но ListView тогда вел себя сумасшедший таким образом, которого я даже не в состоянии описать ....
Есть идеи?