Viewpager嵌套fragment嵌套viewpager出現(xiàn)的問題

在寫輪播發(fā)現(xiàn)一個(gè)問題,往左滑動(dòng)會(huì)出現(xiàn)IllegalStateException。告訴你只能有一個(gè)父親。三思下,注銷掉了destroyItem的通常寫法在instantiateItem里addview之前判斷下if(container.equals(view.getParent())) {

container.removeView(view);

},之后還注意到,@Override

public intgetItemPosition(Object object) {

returnPOSITION_NONE;

}。這兩個(gè)方法一寫,基本就解決了 一些問題,可是后來同事在寫自動(dòng)輪播的時(shí)候會(huì)出現(xiàn)空白頁,打印后發(fā)現(xiàn),從別的頁面切換回來竟然會(huì)輪播線程執(zhí)行兩次,細(xì)想可能是輪播寫的有點(diǎn)問題,就簡(jiǎn)單封裝了一下。

public classMaxImagerViewPagerextendsViewPager {

private booleanisstart=false;

private longtime=2000;

privateListlist=newArrayList<>();

privateTimetasktimetask;

publicMaxImagerViewPager(Context context) {

this(context, null);

}

publicMaxImagerViewPager(Context context,AttributeSet attrs) {

super(context,attrs);

init();

}

private voidinit() {

timetask=newTimetask(this);

}

/**

*按下停止輪播, 如果離開的時(shí)間>= 2000毫秒,那么ViewPager繼續(xù)輪播

*/

public voidstartlop() {

if(!isstart) {

isstart=true;

postDelayed(timetask,time);

}

}

public voidstoplop() {

isstart=false;

removeCallbacks(timetask);

}

@Override

protected voidonDetachedFromWindow() {

super.onDetachedFromWindow();

stoplop();

}

@Override

protected voidonAttachedToWindow() {

super.onAttachedToWindow();

startlop();

}

public static classTimetaskimplementsRunnable {

privateWeakReferenceweakReference;

publicTimetask(MaxImagerViewPager maxImagerViewPager) {

weakReference=newWeakReference(maxImagerViewPager);

}

@Override

public voidrun() {

MaxImagerViewPager maxImagerViewPager =weakReference.get();

maxImagerViewPager.setCurrentItem(maxImagerViewPager.getCurrentItem() +1

);

maxImagerViewPager.postDelayed(maxImagerViewPager.timetask,maxImagerViewPager.time);

}

}

@Override

protected voidonVisibilityChanged(View changedView, intvisibility) {

super.onVisibilityChanged(changedView,visibility);

if(VISIBLE== visibility) {

startlop();

}else if(INVISIBLE== visibility) {

stoplop();

}

}

@Override

public booleanonTouchEvent(MotionEvent ev) {

switch(ev.getAction()) {

caseMotionEvent.ACTION_DOWN:

//按下停止

stoplop();

break;

caseMotionEvent.ACTION_UP:

startlop();

break;

}

return super.onTouchEvent(ev);

}

private booleantimetag=false;

//監(jiān)測(cè)兩次時(shí)間的間隔

//提供方法設(shè)置viewpager的適配器

public voidsetMaXadapter(List list,Context context) {

this.list= list;

setAdapter(newMyadapter(context));

setCurrentItem(200);

}

public classMyadapterextendsPagerAdapter {

privateContextcontext;

publicMyadapter(Context context) {

this.context= context;

}

@Override

public intgetCount() {

returnInteger.MAX_VALUE;

}

@Override

public booleanisViewFromObject(View view,Object object) {

returnview == object;

}

@Override

publicObjectinstantiateItem(ViewGroup container, final intposition) {

final inti = position %list.size();

View view =list.get(i);

view.setOnClickListener(newOnClickListener() {

@Override

public voidonClick(View v) {

Toast.makeText(context,i+"",Toast.LENGTH_SHORT).show();

}

});

if(container.equals(view.getParent())) {

container.removeView(view);

}

Log.d("TAG","instantiateItem: ");

container.addView(view);

returnview;

}

@Override

public intgetItemPosition(Object object) {

returnPOSITION_NONE;

}

@Override

public voiddestroyItem(ViewGroup container, intposition,Object object) {

//? ? ? ? ? ? container.removeView(list.get(position % list.size()));

}

@Override

public voiddestroyItem(View container, intposition,Object object) {

//? ? ? ? ? ? super.destroyItem(container, position, object);

}

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評(píng)論 19 139
  • //輪播圖控件 packagecn.mohekeji.xiangshan.common.widget; impor...
    微光薄荷少年閱讀 350評(píng)論 0 0
  • package cn.luxurygroup.mall.common.widget; import android...
    bb930456aae1閱讀 503評(píng)論 0 1
  • 前言 目前市場(chǎng)上的APP中,輪播圖可以說是很常見的。一個(gè)好的輪播圖,基本上適用于所有的APP。是時(shí)候打造一個(gè)自己的...
    帶心情去旅行閱讀 17,599評(píng)論 15 93
  • 我不想說從第一次見你就喜歡這么俗氣的話,盡管這是事實(shí)。 我不想說想照顧你與你度過余生這么虛假的話,盡管這是事實(shí)。 ...
    是番茄不是西紅柿閱讀 598評(píng)論 0 1

友情鏈接更多精彩內(nèi)容