在Android上有many requests推送刷新widget或library,即使有些人认为它不是good ui pattern(我必须说我属于到这个营地。)
但是“拉动刷新”还是更精确呢:gmail for android 4中使用的机制。当你到达列表的底部时,你得到最后一个元素。但是,如果再次向上滚动(推送),则会出现一个带有无限进度条的新列表项,下一封邮件将加载并填满列表。
Other android coders and UI designers have noticed that,但是我找不到关于这种模式的任何好的辩论,我也无法找到这个功能的实现来填充列表。
有没有人看到过这个问题的有趣解决方案?
答案 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;
}