Tuesday, 10 January 2017

Recycler View in Android


STEP 1 :

compile 'com.android.support:cardview-v7:25.0.1'
compile 'com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:design:25.0.1'

STEP 2 :
Create custom_layout.xml
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:orientation="vertical">



    <android.support.v7.widget.CardView

        android:id="@+id/card"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        app:cardBackgroundColor="@color/colorPrimary"

        app:cardUseCompatPadding="true"

        >



        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:orientation="vertical">



            <TextView

                android:id="@+id/tname"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:textSize="20sp"

                android:text="Name"/>



            <Button

                android:text="Button"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:id="@+id/btn1" />



            <Button

                android:text="Button"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:id="@+id/btn2" />



            <TextView

                android:id="@+id/taddress"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:textSize="20sp"

                android:text="address"/>



        </LinearLayout>

    </android.support.v7.widget.CardView>



</LinearLayout>
STEP 3 : Create activity_main.xml
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity">



  <android.support.v7.widget.RecyclerView

      android:id="@+id/recycler"

      android:layout_width="match_parent"

      android:layout_height="match_parent"

      android:scrollbars="vertical"/>

</RelativeLayout>


STEP 4 : create package GetSet and adapter

STEP 5 : Create User.java in GetSet
package com.app.ydoodle.customadapter.getset;



public class user {

    String name;

    String address;



    public String getId() {

        return id;

    }



    public void setId(String id) {

        this.id = id;

    }



    String id;



    public String getAddress() {

        return address;

    }



    public void setAddress(String address) {

        this.address = address;

    }



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }

}


Step 6 : Create CustomViewHolder.java inside adapter folder
package com.app.ydoodle.customadapter.adapter;



import android.support.v7.widget.CardView;

import android.support.v7.widget.RecyclerView;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;



import com.app.ydoodle.customadapter.R;



public class CustomViewHolder extends RecyclerView.ViewHolder {

    CardView card;

    TextView name,address;

    Button b1,b2;



    public CustomViewHolder(View itemView) {

        super(itemView);

        name = (TextView) itemView.findViewById(R.id.tname);

        address = (TextView) itemView.findViewById(R.id.taddress);

        card = (CardView) itemView.findViewById(R.id.card);

        b1= (Button) itemView.findViewById(R.id.btn1);

        b2= (Button) itemView.findViewById(R.id.btn2);







    }

}

Step 7 : create RecyclerAdapter.java
package com.app.ydoodle.customadapter.adapter;



import android.content.Context;

import android.support.v7.widget.RecyclerView;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.Toast;



import com.app.ydoodle.customadapter.R;

import com.app.ydoodle.customadapter.getset.user;



import java.util.List;



public class RecyclerAdapter extends RecyclerView.Adapter<CustomViewHolder> {



    Context mContext;

    List<user> feedItem;



    public RecyclerAdapter(Context mContext, List<user> feedItem) {

        this.mContext = mContext;

        this.feedItem = feedItem;

    }



    @Override

    public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_layout, parent, false);

        CustomViewHolder holder = new CustomViewHolder(view);

        return holder;

    }



    @Override

    public void onBindViewHolder(CustomViewHolder holder, int position) {

        final user u = feedItem.get(position);

        holder.name.setText(u.getName());

        holder.address.setText(u.getAddress());



        holder.card.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                Toast.makeText(mContext, "Clicked : " + u.getId(), Toast.LENGTH_SHORT).show();

            }

        });



        holder.b1.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(mContext, "b1 :" + u.getId(), Toast.LENGTH_SHORT).show();

            }

        });





    }



    @Override

    public int getItemCount() {

        return feedItem.size();

    }

}


Step 8 : MainActivity.java
package com.app.ydoodle.customadapter;



import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.util.Log;



import com.app.ydoodle.customadapter.adapter.RecyclerAdapter;

import com.app.ydoodle.customadapter.getset.user;



import java.util.ArrayList;

import java.util.List;



public class MainActivity extends AppCompatActivity {



    RecyclerView recyclerView;



    List<user> detail;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        recyclerView = (RecyclerView) findViewById(R.id.recycler);

        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));



        detail = new ArrayList<>();





        for (int i = 0; i < 20; i++) {

            user u = new user();

            u.setName("Miraj");

            u.setAddress("Jungi");

            u.setId(String.valueOf(i));

            detail.add(u);

            Log.i("testing :" , String.valueOf(i));

        }



        RecyclerAdapter adapter = new RecyclerAdapter(MainActivity.this, detail);

        recyclerView.setAdapter(adapter);



    }

}


No comments:

Post a Comment