ListView с первым видимым элементом, имеющим разный макет

Как я могу сделать первый видимый элемент ListView с другим layout от других.

the first cell have a description

when is list is scrolled and 2nd cell is at first position the description of the 2nd cell is shown

Я создал пользовательский адаптер с двумя разными макетами. Теперь, как я могу изменить layout, когда элемент входит в первый position?

Ответ 1

чтобы первый элемент списка имел разный макет, можно использовать следующий код. Но список не перемещается, когда элементы в списке меньше, чем нет видимых элементов.

list.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            // TODO Auto-generated method stub

            if(firstItem != firstVisibleItem)
            {
                firstItem = firstVisibleItem;
                adapter.notifyDataSetChanged();
            }
        }
    });

и внутри класса адаптера проверьте, что postion совпадает с firstItem, если его равным, тогда отображается макет detals.

Ответ 2

Попробуйте это

int visibleposition = ListView.getFirstVisiblePosition();

теперь для этой конкретной позиции измените фон элемента списка, подобного этому

Ответ 3

В getView() вы можете раздувать другой макет для разных позиций. сделать что-то вроде

 if(position==0){
           inflate(first_layout);
   else{
           inflate(other_layout);

Ответ 4

Вы можете попробовать какой-то метод, например

getFirstVisiblePosition

Или этот может ответить на вашу проблему