我使用 ViewPager
来允许用户视图之间刷卡。有没有办法如何强制该 ViewPager
来重新加载/重新实例化它在案件的看法,他们不再有效,或需要被刷新?我想再次呼吁 notifyDataSetChanged()
它的适配器,但是这并不会调用 instantiateItem()
方法。
修改
下面是从ViewPager及其适配器definision扩展的类。贝娄是刷新()
的方法,我打电话的时候,我想强制刷新项目。
公共类DayFlipper扩展ViewPager {
公共类FlipperAdapter扩展PagerAdapter {
@覆盖
公众诠释getCount将(){
返回DayFlipper.DAY_HISTORY;
}
@覆盖
公共无效startUpdate(View容器){
}
@覆盖
公共对象instantiateItem(View容器,INT位置){
Log.d(TAG,instantiateItem():+位置);
日期D = DateHelper.getBot();
的for(int i = 0; I<位置;我++){
D = DateHelper.getTomorrow(四);
}
D = DateHelper.normalize(四);
CubbiesView CV =新CubbiesView(mContext);
cv.setLifeDate(四);
((ViewPager)容器).addView(栽培品种,0);
//添加地图
cv.setCubbieMap(MMAP);
cv.initEntries(四);
返回简历;
}
@覆盖
公共无效destroyItem(View容器,INT位置,Object对象){
((ViewPager)容器).removeView((CubbiesView)对象);
}
@覆盖
公共无效finishUpdate(View容器){
}
@覆盖
公共布尔isViewFromObject(查看视图,Object对象){
返回查看==((CubbiesView)对象);
}
@覆盖
公共Parcelable saveState和(){
返回null;
}
@覆盖
公共无效restoreState(Parcelable状态,类加载器加载器){
}
}
...
公共无效刷新(){
getAdapter()notifyDataSetChanged()。
}
}
解决方案
我已经找到了解决办法。这仅仅是一个解决方法,我的问题,但目前唯一的解决办法。
ViewPager PagerAdapter更新不及时的查看
公众诠释getItemPosition(Object对象){
返回POSITION_NONE;
}
![android 自定义viewpager android 自定义viewpager CSDN](/d/file/2023/09-17/ecf56cd0c2ab444e515d7e03eaffdf15.png)
有谁知道这是否是一个错误或不?
I am using ViewPager
to allow user to swipe between its views. Is there a way how to force this ViewPager
to reload/re-instantiate its views in case that they are no longer valid or needs to be refreshed? I tried to call notifyDataSetChanged()
on its adapter but this does not invoke instantiateItem()
method again.
EDIT
Here is the class that extends from ViewPager and its adapter definision. Bellow is the refresh()
method that I call when I want to force to refresh items.
public class DayFlipper extends ViewPager {
public class FlipperAdapter extends PagerAdapter {
@Override
public int getCount() {
return DayFlipper.DAY_HISTORY;
}
@Override
public void startUpdate(View container) {
}
@Override
public Object instantiateItem(View container, int position) {
Log.d(TAG, "instantiateItem(): " + position);
Date d = DateHelper.getBot();
for (int i = 0; i < position; i++) {
d = DateHelper.getTomorrow(d);
}
d = DateHelper.normalize(d);
CubbiesView cv = new CubbiesView(mContext);
cv.setLifeDate(d);
((ViewPager) container).addView(cv, 0);
// add map
cv.setCubbieMap(mMap);
cv.initEntries(d);
return cv;
}
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView((CubbiesView) object);
}
@Override
public void finishUpdate(View container) {
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((CubbiesView) object);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
}
...
public void refresh() {
getAdapter().notifyDataSetChanged();
}
}
解决方案
I have found a solution. It is just a workaround to my problem but currently the only solution.
ViewPager PagerAdapter not updating the View
public int getItemPosition(Object object) {
return POSITION_NONE;
}
Does anyone know whether this is a bug or not?
相关推荐
最新文章