我有ViewPager
一些片段。每个片段都有一个ListView
in a SlidingDrawer
(=在刷卡之前不可见)和一个ArrayAdapter
.
Adapter 设置为 on onCreateView()
,这会减慢滑动速度,因为每次滑动时都必须加载 30 个列表项,因为正在创建新的片段。
我的问题是,是否可以在ViewPager
空闲时刷卡后设置适配器?或者,还有更好的方法?当 SlidingDrawer 展开时,列表需要已经加载。
我有ViewPager
一些片段。每个片段都有一个ListView
in a SlidingDrawer
(=在刷卡之前不可见)和一个ArrayAdapter
.
Adapter 设置为 on onCreateView()
,这会减慢滑动速度,因为每次滑动时都必须加载 30 个列表项,因为正在创建新的片段。
我的问题是,是否可以在ViewPager
空闲时刷卡后设置适配器?或者,还有更好的方法?当 SlidingDrawer 展开时,列表需要已经加载。
我有一个类似的问题......我使用了听众。尽管如此,当您背靠背滑动两页时,它还是很迟钝……我做了这样的事情来改善体验……
viewpager.setOnPageChangeListener(new OnPageChangeListener() {
int positionCurrent;
boolean dontLoadList;
@Override
public void onPageScrollStateChanged(int state) {
if(state == 0){ // the viewpager is idle as swipping ended
new Handler().postDelayed(new Runnable() {
public void run() {
if(!dontLoadList){
//async thread code to execute loading the list...
}
}
},200);
}
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
positionCurrent = position;
if( positionOffset == 0 && positionOffsetPixels == 0 ) // the offset is zero when the swiping ends{
dontLoadList = false;
}
else
dontLoadList = true; // To avoid loading content for list after swiping the pager.
}
}
如果您需要几毫秒来加载作为 viewpager 补充的列表,那么就 UX 而言它是可以的,而不是提供糟糕的滑动体验......所以,想法是在加载之前在线程中等待 400 毫秒列出并确保当用户尝试快速滑动以查看 viewpager 内容时您实际上不加载内容...
我的问题是,当寻呼机空闲时,是否可以在刷卡后设置适配器?
OnPageChangeListener
您可以在 上设置以ViewPager
监视滑动手势。然后,您可以使用onPageSelected()
(或onPageScrollStateChanged()
监视当前状态)方法在选择新页面时获得通知,并从该方法开始加载数据。
另外,请确保ListView
对延迟负责,而不是对代码的其他部分负责。