2016-05-12 13 views
0

Ich verwende den Standard Viewpager mit benutzerdefinierten PageAdapter.Android - Zugriff auf TextView in ViewPager

Wie kann ich auf ViewViewers TextView zugreifen, um die Schriftfarbe bei onPageSelected() zu ändern?

Edit 1: ViewPager Listener

final ViewPager vp = (ViewPager) findViewById(R.id.a2viewpager); 
     vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      public void onPageScrollStateChanged(int arg0) { 

      } 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
       vp.getParent().requestDisallowInterceptTouchEvent(true); 
      } 
      public void onPageSelected(final int currentPage) { 
       ImageButton leftNav = (ImageButton) findViewById(R.id.a2left_nav); 
       ImageButton rightNav = (ImageButton) findViewById(R.id.a2right_nav); 
       int lastIdx = vpAadapter.getCount() - 1; 


       if (receiptPool.get(currentPage).contains("_(Canceled)") == true){ 
        vp.setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorRed)); 
       } 
       else { 
        vp.setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorMainTextBackground)); 
       } 


      } 
     }); 

Edit 1: Kundenspezifische Adapter

public class CustomPagerAdapter extends PagerAdapter { 

    Context mContext; 
    private Vector<View> pages; 
    private activity1 act1; 
    private activity2 act2; 
    private Intent intent; 

    public CustomPagerAdapter(Context context, Vector<View> pages) { 
     super(); 
     this.act1 = new activity1(); 
     this.act2 = new activity2(); 
     this.mContext=context; 
     this.pages=pages; 
    } 


    @Override 
    public Object instantiateItem(final ViewGroup container, final int CurrentPage) { 
     View page = pages.get(CurrentPage); 

     page.setOnTouchListener(new View.OnTouchListener() { 
      /******/ 

     }); 

     container.addView(page); 
     return page; 
    } 


    @Override 
    public int getCount() { 
     return pages.size(); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view.equals(object); 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View) object); 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     // Seems to be required as a workaround. 
     return POSITION_NONE; 
    } 
} 

Dank

+0

könnten Sie bieten den Quellcode –

+0

@vinodh Kumar ich einige Code, thx hinzugefügt haben. –

Antwort

0

Da Sie einen benutzerdefinierten Adapter verwenden, das bedeutet, dass Ihr Adapter alle Elemente aufbläst im ViewPager. Überprüfen Sie also Ihren Adapter, finden Sie das aufgeblähte XML und ändern Sie die Textfarbe, oder machen Sie es programmatisch in Ihren getView oder instantiateItem Methoden in Ihrem Adapter. Aber es ist viel besser, wenn wir Ihren Code sehen

+0

Ich habe den Code für den benutzerdefinierten Adapter und den Viewpager-Listener hinzugefügt. –

+0

@LouisLee Ich sehe Ihren Code, aber wo ist die Textansicht, die Sie aktualisieren möchten? Wie ich sehe, ist dieser Code Kauderwelsch - oder ich verstehe es nicht. Was bedeutet "this.act1 = new activity1();"? Was für ein Objekt ist das, Aktivität? Wenn ja, finde ein gutes Tutorial und prüfe, wie ein viewPager Adapter funktioniert - und du bekommst die Idee –

0

Viewpager muss mehrere Fragmente enthalten, zuerst müssen Sie das Fragment lokalisieren.

Unten Stück Code zeigt einen Textview Zugriff auf die aktuell angezeigte Fragment:

DemoObjectFragment frag1 = (DemoObjectFragment)mViewPager.getAdapter().instantiateItem(mViewPager, mViewPager.getCurrentItem()); 

frag1.textview.setVisibility(View.VISIBLE); 
+0

Ich habe Code zu meinem Beitrag hinzugefügt, bitte erkläre, wie du ihn auf meinen Fall anwendest –

Verwandte Themen