像在gmail中一样按下刷新android(而不是像在iphone上那样刷新)

时间:2012-04-24 20:45:25

标签: android list refresh ui-design

在Android上有many requests推送刷新widgetlibrary,即使有些人认为它不是good ui pattern(我必须说我属于到这个营地。)

但是“拉动刷新”还是更精确呢:gmail for android 4中使用的机制。当你到达列表的底部时,你得到最后一个元素。但是,如果再次向上滚动(推送),则会出现一个带有无限进度条的新列表项,下一封邮件将加载并填满列表。

Other android coders and UI designers have noticed that,但是我找不到关于这种模式的任何好的辩论,我也无法找到这个功能的实现来填充列表。

有没有人看到过这个问题的有趣解决方案?

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

你可以自己尝试实现它。它非常简单:

我是怎么做的:

1)设置列表视图onScrollStateChange:

@Override
public void onScrollStateChanged(AbsListView listView, int scrollState) {
    if (scrollState == SCROLL_STATE_IDLE) {
        if (listView.getLastVisiblePosition() >= listView.getCount()-1) {
                //scroll reached the end, trigger the method to load more itens!                
        }
    }
}

2)在你的基础适配器中:

private static final int TYPE_VIEW_COUNT = 2;
private static final int TYPE_VIEW_CONTENT = 0;
private static final int TYPE_VIEW_LOADING = 1; 

@Override
public int getItemViewType(int position) {

    if (position == (getCount()-1)) {
        return TYPE_VIEW_LOADING;
    } else {
        return TYPE_VIEW_CONTENT;
    }           

}

@Override
public int getViewTypeCount() {
    return TYPE_VIEW_COUNT;
}



@Override
public int getCount() {
    //return list size + 1;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View view = null;

    switch (getItemViewType(position)) {

    case TYPE_VIEW_CONTENT:

        //load your content view (using convertView and then...)

        break;
    case TYPE_VIEW_LOADING:
        //load your loading view (indeterminate progressbar)
        break;
    }



    return view;        

}