In the below example I have created a Collapsing toolbar. When you scoll your recycler items then your header image will hide. Here In actvity_main.xml I have first created CoordinatorLayout as root element, In CoordinatorLayout I have added AppBarLayout, CollapsingToolbarLayout, Toolbar and RecyclerView as child elements. 
In next step I have created card_view.xml layout, Here I have added a CardView with in CardView I have added a LinearLayout, ImageView, TextView. 
After this I have created CardAdapter and Names class. In CardAdapter class I have uesd View holder class and onBindViewHolder meyhod. In MainActivity class I have initialize image and text. You can see below example code it clearly describe you How to use Collapsing Toolbar in RecyclerView.
Step(1)I have added first RecyclerView, CardView and Design dependency to Grandle file.
     compile 'com.android.support:design:23.1.1'
     compile 'com.android.support:recyclerview-v7:21.0.+'
       compile 'com.android.support:cardview-v7:21.0.+'
  Step(2)activity_main.xml-
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <ImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            android:scaleType="centerCrop"
            android:src="@drawable/iconlarge"
            app:layout_collapseMode="parallax" />
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
            android:title="Collapsing Toolbar"
            app:layout_collapseMode="pin" />
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v7.widget.RecyclerView>
</android.support.design.widget.CoordinatorLayout>
    Step(3)- Created a cardView.xml layout
 
   <?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:id="@+id/card_view"
    card_view:cardPreventCornerOverlap="false"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    card_view:cardCornerRadius="2dp"
    card_view:contentPadding="10dp">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/rel">
        <ImageView
            android:id="@+id/cardimage"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:scaleType="fitCenter"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="title"
            android:layout_marginLeft="10dp"
            android:textStyle="bold"
            android:textSize="20sp"
            android:id="@+id/cardtitle"
            android:layout_gravity="center_vertical"/>
    </LinearLayout>
</android.support.v7.widget.CardView>
Step(4)-Created a new bin class
 public class Names
    {
        String name;
        int id;
        public Names(String name, int id) {
            this.name = name;
            this.id = id;
        }
        public String getName(){
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
    }
    Step(5)-Created a new CardAdapter class
   
 public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
    List<Names> list = new ArrayList<>();
    public CardAdapter(List<Names> list) {
        this.list = list;
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    public Names getItem(int i) {
        return list.get(i);
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_view, parent, false);
        return new ViewHolder(itemView);
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.Names =getItem(position);
        holder.cardtitle.setText(list.get(position).name);
    }
    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }
    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView cardimage;
        TextView cardtitle;
        Names Names;
        public ViewHolder(View itemView) {
            super(itemView);
            cardimage = (ImageView) itemView.findViewById(R.id.cardimage);
            cardtitle = (TextView) itemView.findViewById(R.id.cardtitle);
        }
    }
}
Step(6)MainActivity-
 
public class MainActivity extends AppCompatActivity {
    //ui control
    Toolbar toolbar;
    CollapsingToolbarLayout collapsingToolbarLayout;
    RecyclerView recyclerView;
    FloatingActionButton floatingActionButton;
    CardAdapter adapter;
    List<Names> names;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        collapsingToolbarLayout = (CollapsingToolbarLayout)     findViewById(R.id.collapsing_toolbar);
        recyclerView=(RecyclerView)findViewById(R.id.recyclerView);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        //recyclerview
        LinearLayoutManager llm = new LinearLayoutManager(this);
        llm.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(llm);
        recyclerView.setHasFixedSize(true);
        initializeData();
        adapter = new CardAdapter(names);
        //set adapter
        recyclerView.setAdapter(adapter);
    }
    private void initializeData() {
        names = new ArrayList<>();
        names.add(new Names("Raj", R.drawable.g1));
        names.add(new Names("Vikky", R.drawable.g2));
        names.add(new Names("Amit", R.drawable.g3));
        names.add(new Names("Omi", R.drawable.g4));
        names.add(new Names("Tarun", R.drawable.g6));
        names.add(new Names("Aman", R.drawable.g7));
        names.add(new Names("Shekhar", R.drawable.g8));
        names.add(new Names("Deepak", R.drawable.g9));
        names.add(new Names("Kapil", R.drawable.g1));
        names.add(new Names("Rohit", R.drawable.g2));
        names.add(new Names("Abhi", R.drawable.g4));
        names.add(new Names("Sandeep", R.drawable.g9));
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
 
                       
                    
0 Comment(s)