Tôi đang cố gắng để có được điều này làm việc: Tôi về cơ bản muốn có hai Recyclerviews trong một ViewPager. Tôi đã làm theo Hướng dẫn này: http://android-java-development.blogspot.de/2012/05/system.html, nhưng có vẻ như nó không hoạt động. Tôi trông giống như máy nhắn tin xem có sản phẩm nào và chế độ xem của người tái chế không hiển thị.Recyclerviews trong ViewPager
Đây là mã bố trí của tôi:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/pager_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/tab_height">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/accent"/>
</android.support.v4.widget.SwipeRefreshLayout>
Và PageAdapter tôi:
public class NewsPagerAdapter extends PagerAdapter {
private Context context;
private Vector<RecyclerView> recyclerViewList;
private String[] titles;
public NewsPagerAdapter(Context context, int titlesId) {
this.context = context;
this.recyclerViewList = new Vector<>();
setTitles(titlesId);
}
public void add(RecyclerView recyclerView) {
recyclerViewList.add(recyclerView);
}
public RecyclerView.Adapter getAdapterForViewAtIndex(int index) {
return recyclerViewList.get(index).getAdapter();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(recyclerViewList.get(position),
new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 100)
);
return container;
}
@Override
public int getCount() {
return recyclerViewList.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 CharSequence getPageTitle(int position) {
return titles[position];
}
public void setTitles(int titles) {
this.titles = context.getResources().getStringArray(titles);
}
}
Và phương pháp onCreatView tôi:
GridLayoutManager layoutManager1 = new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.news_column_count));
GridLayoutManager layoutManager2 = new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.news_column_count));
RecyclerView listView1 = new RecyclerView(getActivity());
RecyclerView listView2 = new RecyclerView(getActivity());
listView1.setLayoutManager(layoutManager1);
listView2.setLayoutManager(layoutManager2);
NewsAdapter adapter1 = new NewsAdapter(getActivity(), null);
NewsAdapter adapter2 = new NewsAdapter(getActivity(), null);
adapter1.setOnItemClickListener(this);
adapter2.setOnItemClickListener(this);
listView1.setAdapter(adapter1);
listView2.setAdapter(adapter2);
newsPagerAdapter.add(listView1);
newsPagerAdapter.add(listView2);
newsViewPager.setAdapter(newsPagerAdapter);
Ở đây tôi đang đi qua các đối tượng con trỏ đến bộ chuyển đổi :
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
((NewsAdapter) newsPagerAdapter.getAdapterForViewAtIndex(0)).swapCursor(data);
}
Dường như với tôi rằng bạn đã bỏ lỡ các thông số bố cục cho RecyclerView mà bạn đã tạo lập trình. Hãy thử sử dụng một cái gì đó như thế này 'RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams (LayoutParams.MATCH_PARENT, 100);' cho cả hai quan điểm của bạn –
cảm ơn rất nhiều cho câu trả lời của bạn! Rất tiếc, chế độ xem của người tái chế vẫn có vẻ là vô hình – tobs
Bạn có thể cập nhật mã không? –