Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- The top two items are card views and the third item is a list of hotels.
- public class **MainActivity** extends AppCompatActivity {
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- RecyclerView recyclerView = findViewById(R.id.recycler_view);
- ArrayList<DataModel> items = new ArrayList<>();
- items.add(new DataModel("Bus"));
- items.add(new DataModel("Flight"));
- ArrayList<String> hotelsList=new ArrayList<>();
- hotelsList.add("Hotel 1");
- hotelsList.add("Hotel 2");
- hotelsList.add("Hotel 2");
- items.add(new DataModel("Hotels",hotelsList));
- LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
- linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
- recyclerView.setLayoutManager(linearLayoutManager);
- ParentAdapter parentAdapter = new ParentAdapter(items,MainActivity.this);
- recyclerView.setAdapter(parentAdapter);
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <android.support.v7.widget.RecyclerView
- android:id="@+id/recycler_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- </RelativeLayout>
- public class DataModel {
- private String title;
- private ArrayList<String> hotels;
- public DataModel(String title){
- this.title=title;
- }
- public DataModel(String title, ArrayList<String> hotels){
- this.title=title;
- this.hotels=hotels;
- }
- public String getTitle() {
- return title;
- }
- public ArrayList<String> getHotels() {
- return hotels;
- }
- }
- public class ParentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
- private ArrayList<DataModel> items;
- private Context mContext;
- public ParentAdapter(ArrayList<DataModel> items, Context mContext) {
- this.items = items;
- this.mContext=mContext;
- }
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
- if (viewType == ViewType.NORMAL_ITEM) {
- return new NormalHolder(layoutInflater.inflate(R.layout.normal_view, parent, false));
- } else if (viewType == ViewType.HOTELS_LIST_ITEM) {
- return new ListHolder(layoutInflater.inflate(R.layout.list_view, parent, false));
- }
- return null;
- }
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- int cardType = getItemViewType(position);
- switch (cardType) {
- case ViewType.NORMAL_ITEM:
- NormalHolder normalHolder=(NormalHolder) holder;
- normalHolder.title.setText(items.get(position).getTitle());
- break;
- case ViewType.HOTELS_LIST_ITEM:
- ListHolder listHolder=(ListHolder) holder;
- HotelCardAdapter hotelCardAdapter = new HotelCardAdapter(mContext, items.get(position).getHotels());
- LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
- linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
- listHolder.hotelsList.setLayoutManager(linearLayoutManager);
- listHolder.hotelsList.setAdapter(hotelCardAdapter);
- break;
- }
- }
- private interface ViewType {
- int NORMAL_ITEM = 0;
- int HOTELS_LIST_ITEM = 1;
- }
- @Override
- public int getItemViewType(int position) {
- if (position == 0 || position == 1) {
- return ViewType.NORMAL_ITEM;
- } else return ViewType.HOTELS_LIST_ITEM;
- }
- @Override
- public int getItemCount() {
- return items.size();
- }
- private class NormalHolder extends RecyclerView.ViewHolder {
- TextView title;
- public NormalHolder(View inflate) {
- super(inflate);
- title=inflate.findViewById(R.id.title);
- }
- }
- private class ListHolder extends RecyclerView.ViewHolder {
- RecyclerView hotelsList;
- public ListHolder(View inflate) {
- super(inflate);
- hotelsList = inflate.findViewById(R.id.hotel_list);
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:card_view="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="5dp"
- android:layout_marginTop="5dp"
- card_view:cardCornerRadius="2dp"
- card_view:contentPadding="10dp">
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:padding="6dp">
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Bus"
- android:textColor="@color/colorPrimary"
- android:textSize="20sp"/>
- <Button
- android:id="@+id/view_all"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentEnd="true"
- android:layout_alignParentRight="true"
- android:gravity="center"
- android:text="View All"
- android:textSize="12sp"/>
- </RelativeLayout>
- </android.support.v7.widget.CardView>
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:card_view="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="5dp"
- android:layout_marginTop="5dp"
- card_view:cardCornerRadius="2dp"
- card_view:contentPadding="10dp">
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="6dp">
- <TextView
- android:id="@+id/header"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Hotels"
- android:textColor="@color/colorPrimary"
- android:textSize="17sp"/>
- <android.support.v7.widget.RecyclerView
- android:id="@+id/hotel_list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@+id/header"
- android:layout_marginTop="12dp"
- android:orientation="horizontal"/>
- </RelativeLayout>
- </android.support.v7.widget.CardView>
- public class HotelCardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
- private ArrayList<String> hotelsObject;
- private Context context;
- public HotelCardAdapter(Context context, ArrayList<String> hotelsObject) {
- this.hotelsObject = hotelsObject;
- this.context = context;
- }
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
- return new HotelCarouselHolder(layoutInflater.inflate(R.layout.hotel_carousel_item, null));
- }
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- HotelCarouselHolder hotelCarouselHolder = (HotelCarouselHolder) holder;
- hotelCarouselHolder.title.setText(hotelsObject.get(position));
- }
- @Override
- public int getItemCount() {
- return hotelsObject.size();
- }
- private class HotelCarouselHolder extends RecyclerView.ViewHolder {
- private TextView title;
- public HotelCarouselHolder(View inflate) {
- super(inflate);
- title = inflate.findViewById(R.id.title);
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:padding="16dp">
- <RelativeLayout
- android:id="@+id/hotel_details_layout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <ImageView
- android:id="@+id/hotel_image"
- android:layout_width="256dp"
- android:layout_height="144dp"
- android:scaleType="centerCrop"
- android:src="#999999"/>
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/hotel_image"
- android:textSize="16sp"
- android:text="Hotels 1"/>
- </RelativeLayout>
- </RelativeLayout>
Add Comment
Please, Sign In to add comment