尝试自动刷新当前页面视图时从ViewPager获取下一页面视图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试自动刷新当前页面视图时从ViewPager获取下一页面视图相关的知识,希望对你有一定的参考价值。
我正在使用ViewPager
,其中包含含有Fragment
的RecyclerView
。在那里,我试图每10秒自动刷新当前(可见的)页面视图。但问题是在10秒后handler.postDelayed()
正在更新下一页视图的视图(不可见)。我知道这是因为pager
加载1个额外的页面,这导致holder
更新下一个view
和handler.postDelayed()
正在更新view
下一个holder
。
如何解决这个问题呢。
这是我的autorefresh
方法,我从onBindViewHolder()
调用它;
private void startAutoRefresh(final ViewHolder holder, final String exchange,
final int currentPosition, final int timer){
new FetchData(holder, exchange, firstTimeLoadPosition).execute(
Configuration.exchangesAPI.get(exchange));
if (MainActivity.pagerPosition == currentPosition) {
counterView.setText(timer + "");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (timer > 0) {
counterView.setText(timer + "");
startAutoRefresh(holder, exchange, currentPosition, timer - 1);
} else {
Log.wtf("Reloading", currentPosition+"");
new FetchData(holder, exchange, currentPosition).execute(
Configuration.exchangesAPI.get(exchange));
startAutoRefresh(holder, exchange, MainActivity.pagerPosition, counter);
}
}
}, 1000);
}
}
使用一个接口并将该接口作为适配器的参数传递...在接口interface GetPositionFromMainActivity extends Parcelable{int getPosition();}
和MainActivity中设置适配器的视图纸GetPositionFromMainActivity getpos = new GetPositionFromMainActivity { @override getpos{ return viewpager.getPosition()}
和在recycler适配器if(interface.getPos == currentPosition)
而不是静态变量..我的意思是只使用一个接口而不是一个静态变量...将接口传递给viewpager的适配器..并且在viewPagerAdapter的getItem
中将接口作为putParcelable
传递为bundle参数..获取片段的参数并将接口传递给recycleler适配器...
你可以使用onPageSelected
的ViewPager.OnPageChangeListenr
方法。例如,
ViewPager.OnPageChangeListener mPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(final int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(final int position) {
// It returns the position of currently visible page.
// Write your code here, according to your slide position using switch or if else.
}
@Override
public void onPageScrollStateChanged(int state) {
}
};
以上是关于尝试自动刷新当前页面视图时从ViewPager获取下一页面视图的主要内容,如果未能解决你的问题,请参考以下文章
无法从 ViewPager 中的另一个片段刷新/更新片段中的列表视图
Excel 用户在从视图中刷新数据时从 SQL Server 收到转换错误
Android:Viewpager 和 FragmentStatePageAdapter