我正在开发一个包含listview时间轴Feed的应用,一个独特的项目填满整个屏幕,然后我在Feed中导航,这些项目只有在屏幕上显示时才会加载,I需要在它们出现在屏幕上之前加载它们,比如一次加载10个项目。
我的适配器:
public class FeedRowAdapter extends BaseAdapter {
public FeedRowAdapter(Activity act, int resource, List<FeedView> arrayList)
throws Exception {
this.activity = act;
this.row = resource;
this.items = arrayList;
this.layoutInflater = LayoutInflater.from(act);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = layoutInflater.inflate(row, null);
// LayoutInflater inflater = (LayoutInflater) activity
// .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// view = inflater.inflate(row, null);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
if ((items == null) || ((position + 1) > items.size()))
return view;
objBean = items.get(position);
//Some stuff here
return view;
}
@Override
public int getCount() {
// PUBLICAR Auto-generated method stub
return items.size();
}
@Override
public Object getItem(int position) {
// PUBLICAR Auto-generated method stub
return items.get(position);
}
@Override
public long getItemId(int position) {
// PUBLICAR Auto-generated method stub
return position;
}
}
编辑: 我已经使用滚动来加载更多项目,但是这些项目有要加载的图像,并且只在项目出现在屏幕上时加载,我需要在显示之前加载图像,就像预加载一样。我使用Picasso lib加载图片。
提前致谢。
答案 0 :(得分:1)
一种可能的解决方案是检查最后一项是否可见,如果是,则加载更多项目。 为了检查最后一项是否在视图中,您可以使用以下函数和这些方法签名。
public abstract void onScroll (AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
查看http://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html
这是一个完全符合您要求的http://mobile.dzone.com/news/android-tutorial-dynamicaly
的教程