ListView与第一个可见项目具有不同的布局

时间:2013-01-25 10:54:51

标签: android android-listview

如何使ListView的第一个可见元素与其他layout具有不同的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

我创建了一个具有2种不同布局的自定义适配器。现在,当项目进入第一个position时,如何进行{{1}}更改?

4 个答案:

答案 0 :(得分:4)

要获得具有不同布局的listview的第一项,可以使用以下代码。但是当列表中的项目小于可见项目的数量时,列表视图不会移动。

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布局。

答案 1 :(得分:2)

试试这个

int visibleposition = ListView.getFirstVisiblePosition();

现在针对此特定位置更改列表项的背景,如此

答案 2 :(得分:0)

在getView()中,您可能会为不同的位置充气不同的布局。做点什么

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

答案 3 :(得分:0)

您可以尝试一些方法,例如

  

getFirstVisiblePosition

this可能会回答您的问题