2016-10-05 3 views
0

Я хочу иметь возможность предварительно загрузить следующую страницу ViewPager с динамическим контентом на Android. Я добавляю контент для просмотра после создания представления.ViewPager как предустановить следующий вид Android

@Override 
public Object instantiateItem(ViewGroup collection, int position) { 
    LayoutInflater inflater = (LayoutInflater) collection.getContext() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.test_layout, null); 
    view.setTag("rel" + position); 
    collection.addView(view, 0); 
    return view; 
} 

если я пытаюсь получить следующий вид, с findViewWithTag("rel" + (view1.getCurrentItem() + 1)); возвращается null. Итак, как я мог получить следующий вид или раздуть его вручную?

ответ

0

Попробуйте использовать setOffscreenPageLimit(int limit) способ ViewPager класс.

метод
+0

Спасибо, это было –

0

GetItem вызывается перед переходом к следующей позиции, так что вы можете передать любые динамические данные и хотите в GetInstance

частный класс MyPagerAdapter расширяет FragmentPagerAdapter {

public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int pos) { 
     switch(pos) { 

     case 0: return FirstFragment.newInstance("FirstFragment, Instance 1"); 
     case 1: return SecondFragment.newInstance("SecondFragment, Instance 1"); 
     case 2: return ThirdFragment.newInstance("ThirdFragment, Instance 1"); 
     case 3: return ThirdFragment.newInstance("ThirdFragment, Instance 2"); 
     case 4: return ThirdFragment.newInstance("ThirdFragment, Instance 3"); 
     default: return ThirdFragment.newInstance("ThirdFragment, Default"); 
     } 
    } 

    @Override 
    public int getCount() { 
     return 5; 
    }  
} 

общественного класса FirstFragment расширяет фрагмент {

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.first_frag, container, false); 

    TextView tv = (TextView) v.findViewById(R.id.tvFragFirst); 
    tv.setText(getArguments().getString("msg")); 

    return v; 
} 

public static FirstFragment newInstance(String text) { 

    FirstFragment f = new FirstFragment(); 
    Bundle b = new Bundle(); 
    b.putString("msg", text); 

    f.setArguments(b); 

    return f; 
} 

+0

Спасибо за ответ, но я повторно использую тот же макет в действии с пейджером представления, и я просто заполняю его разным контентом, я не использую фрагменты на данный момент. Также у меня 30 страниц, поэтому создание всех из них может привести к нехватке памяти JVM, я добавляю растровые изображения в макеты –

Смежные вопросы