像Instagram这样的列表视图中的标题消失了

时间:2014-09-14 14:30:36

标签: android listview instagram

我在listview中遇到了问题。如果我滚动列表,一切都很好。但如果我点击复选框,标题就会消失。我查了一下,notifyOfChange()没有启动。我认为这是由于绘制了视图。谁知道如何在最后一个实例中绘制标题。 我使用以下代码:

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

    //the listview has only few children (of course according to the height of each child) who are visible
    for(int i=0; i < list.getChildCount(); i++)
    {
        View child = list.getChildAt(i);
        MuscleViewHolder holder = (MuscleViewHolder) child.getTag();

        //if the view is the first item at the top we will do some processing
        if(i == 0)
        {
            boolean isAtBottom = child.getHeight() <= holder.headerLayout.getBottom();
            int offset = holder.previousTop - child.getTop();
            if(!(isAtBottom && offset > 0))
            {

                holder.previousTop = child.getTop();
                holder.headerLayout.offsetTopAndBottom(offset);

                holder.headerLayout.invalidate();
            }

        } //if the view is not the first item it "may" need some correction because of view re-use
        else if (holder.headerLayout.getTop() != 0)
        {
            int offset = -1 * holder.headerLayout.getTop();
            holder.headerLayout.offsetTopAndBottom(offset);
            holder.previousTop = 0;
            holder.headerLayout.invalidate();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题解决了。我将代码替换为以下

 if(!(isAtBottom && offset > 0)) {
                holder.setPreviousTop(child.getTop());
                if(itNotScroll){
                    holder.getHeaderLayout().offsetTopAndBottom(-holder.getPreviousTop());
                    itNotScroll = false;
                } else {
                    holder.getHeaderLayout().offsetTopAndBottom(offset);
                }
                holder.getHeaderLayout().invalidate();
            }

然而,我这样做了,所以你只能打开expaned listview中的一个元素