2

Я пытаюсь сделать что-то вроде рынка Android, чтобы показывать товары из разных категорий. Я реализовал это поведение с помощью библиотеки this, и все работает хорошо.Различные макеты в viewpager

Теперь я хочу видеть список на странице категорий, а в каждом из них - сетку. Конечно, каждый из них будет иметь разные источники данных.

Как я могу это достичь? Это как-то связано с адаптерами?

ответ

1

Я думаю, вы хотите расширить FragmentPagerAdapter, переопределить getItem и вернуть соответствующий объект фрагмента (или ListFragment) в зависимости от индекса/позиции в ViewPager.

В XML-макет для вашей деятельности, вы должны включать в себя ViewPager (<android.support.v4.view.ViewPager>), и в своей деятельности onCreate использовать метод setAdapter из ViewPager назначить свой FragmentPagerAdapter.

+0

Спасибо. И когда я возвращаю правильный фрагмент, я должен создать новый или сделать что-то вроде: return MyFragment.newInstance (position); – olistic

+0

Либо бы работало. Зависит от того, насколько различны эти два фрагмента - может иметь смысл разделить их на два разных класса, или может иметь смысл иметь один фрагмент, который изменяется в зависимости от того, что вы передаете его конструктору. Лично я бы пошел с двумя разными классами Фрагментов. –

+0

Большое спасибо – olistic

0

Здравствуйте, я объясню, как использовать фрагмент в виде пейджере в моем учебнике взглянуть на этой link

Вы также можете загрузить код из here

9

Я нашел один очень хороший пример вы можете найти что на этом сайте

https://github.com/astuetz/ViewPagerExtensions

Else надеюсь, что этот код будет полезным для вас.

@Override 
public Object instantiateItem(View collection, int position) { 
    View v = new View(PatientView.this.getApplicationContext()); 
    final LayoutInflater inflater = (LayoutInflater) PatientView.this 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    switch (position) { 
    case 0: 
     v = inflater.inflate(R.layout.patientp1, 
       (ViewGroup) null, false); 
     ((Button) v.findViewById(R.id.pp1btnbck)).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       finish(); 
      } 
     }); 

     break; 
    case 1: 
     v = inflater.inflate(R.layout.patientp2, null, false 
       ); 
     break; 
    default: 

     TextView tv = new TextView(PatientView.this.context); 
     tv.setText("Page " + position); 
     tv.setTextColor(Color.WHITE); 
     tv.setTextSize(30); 
     v = tv; 
     break; 
    } 
    ((ViewPager) collection).addView(v, 0); 

    return v; 
} 
+0

приятель, я пытаюсь это, но здесь я получаю ошибку «Тип несоответствия: невозможно преобразовать из вида в int» на v = inflater.inflate (R.layout.patientp1, (ViewGroup) null, false); –

+1

спасибо, мне это помогает ... –

+0

cool bro .. thanks –

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