2013-07-02 2 views
0

Пожалуйста, смотрите приложение Contacts + в магазине, чтобы узнать, что я имею в виду. У вас есть три списка, каждый из которых имеет ширину экрана. Затем вы можете прокручивать каждый, используя HorizontalScrollView. Каков наилучший способ сделать это?Android - Несколько ListView внутри HorizontalScrollView

+0

Используйте viewpager и три фрагмента, имеющие списки в них. –

+0

Пожалуйста, добавьте свой комментарий в качестве ответа, чтобы я мог его выбрать :) Спасибо. –

+0

Я добавил ответ, вы должны отметить его. –

ответ

2

Вы можете использовать viewpager с тремя фрагментами в качестве вкладок, используя адаптер табуляции, подобный этому.

Принимающей активность:

public class PageViewActivity extends FragmentActivity { 
     MyPageAdapter pageAdapter; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_page_view); 
     List<Fragment> fragments = getFragments(); 
     pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments); 
     ViewPager pager = 
(ViewPager)findViewById(R.id.viewpager); 
     pager.setAdapter(pageAdapter); 
     } 
    } 

Адаптер фрагмент

class MyPageAdapter extends FragmentPagerAdapter { 
    private List<Fragment> fragments; 

    public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) { 
    super(fm); 
    this.fragments = fragments; 
    } 
    @Override 
    public Fragment getItem(int position) { 
    return this.fragments.get(position); 
    } 

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

Способ получить фрагменты (опционально, зависит от того, как вы хотели бы использование быть)

private List<Fragment> getFragments(){ 
    List<Fragment> fList = new ArrayList<Fragment>(); 

    fList.add(MyFragment.newInstance("Fragment 1")); 
    fList.add(MyFragment.newInstance("Fragment 2")); 
    fList.add(MyFragment.newInstance("Fragment 3")); 

    return fList; 

И ваш фрагмент класс

public class MyFragment extends Fragment { 
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE"; 

public static final MyFragment newInstance(String message) 
{ 
    MyFragment f = new MyFragment(); 
    Bundle bdl = new Bundle(1); 
    bdl.putString(EXTRA_MESSAGE, message); 
    f.setArguments(bdl); 
    return f; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    String message = getArguments().getString(EXTRA_MESSAGE); 
    View v = inflater.inflate(R.layout.myfragment_layout, container, false); 
    TextView messageTextView = (TextView)v.findViewById(R.id.textView); 
    messageTextView.setText(message); 

    return v; 
} 
} 

Пожалуйста, не стесняйтесь возвращаться ко мне, если вам нужна дополнительная помощь.

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