2

尽管有些人认为这不是一个很好的 ui 模式(我必须说我属于这个阵营) ,但已经有很多请求在 android 上刷新小部件库的请求。

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

其他 android 编码人员和 UI 设计人员已经注意到了这一点,但我找不到关于这种模式的任何好的辩论,我也找不到这个功能的实现来填充列表。

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

4

2 回答 2

3

这是两个有用的库:

于 2012-10-15T15:00:46.313 回答
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;        

}
于 2014-08-18T12:05:15.440 回答