Saturday, 15 September 2018

RecyclerView Custom Adapter Example

Create New project RecyclerView Custom Adapter with empty activity

Add dependencies in build.gradle as below
dependencies {
    implementation 'com.android.support:recyclerview-v7:26.0.0'
}

// activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"    
xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"   
 android:layout_height="match_parent"   
 android:orientation="vertical"  
  tools:context="com.krishanandroid.recyclerviewcustomadapter.MainActivity">

    <EditText  android:layout_width="match_parent"  
      android:layout_height="wrap_content" 
       android:id="@+id/et_eno" 
       android:hint="enter eno" 
       android:inputType="number"
        android:textSize="16sp"   
     android:gravity="center_horizontal"/>

    <EditText    
    android:layout_width="match_parent"  
      android:layout_height="wrap_content" 
       android:id="@+id/et_name"  
      android:hint="enter name"   
     android:inputType="text"  
      android:textSize="16sp"  
      android:gravity="center_horizontal"/>

    <EditText   
     android:layout_width="match_parent"  
      android:layout_height="wrap_content" 
       android:id="@+id/et_salary"  
      android:hint="enter sal"
        android:inputType="number" 
       android:textSize="16sp"   
     android:gravity="center_horizontal"/>

    <Button     
   android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button_add"  
      android:text="Add"  
      android:textSize="16sp"/>

    <android.support.v7.widget.RecyclerView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"  
      android:id="@+id/recyclerView1"    
    android:padding="4dp">

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

</LinearLayout>

// MainActivity.java
package com.krishanandroid.recyclerviewcustomadapter;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;

import static android.support.v7.widget.LinearLayoutManager.VERTICAL;

public class MainActivity extends AppCompatActivity {

    EditText                mEno, mESalary, mEName;
    Button                  mButtonAdd;

    RecyclerView            mRecyclerView;

    ArrayList<RowItems>     arrayList;
    LinearLayoutManager     linearLayoutManager;
    RecyclerViewAdapter     myAdapter;

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{

        @Override        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            View view = getLayoutInflater().inflate(R.layout.row_items, parent,false);

            ViewHolder viewHolder = new ViewHolder(view);
            return viewHolder;
        }

        @Override        public void onBindViewHolder(ViewHolder holder, int position) {

            RowItems items = arrayList.get(position);
            holder.tv1.setText(""+items.getEno());
            holder.tv2.setText(items.getEname());
            holder.tv3.setText(""+items.getEsalary());
        }

        @Override        public int getItemCount() {
            return arrayList.size();
        }

        public class ViewHolder extends RecyclerView.ViewHolder {
            TextView tv1, tv2, tv3;
            public ViewHolder(View itemView) {
                super(itemView);
                tv1 = itemView.findViewById(R.id.tv1);
                tv2 = itemView.findViewById(R.id.tv2);
                tv3 = itemView.findViewById(R.id.tv3);
            }
        }
    }

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mEno = findViewById(R.id.et_eno);
        mESalary = findViewById(R.id.et_name);
        mEName = findViewById(R.id.et_salary);
        mButtonAdd = findViewById(R.id.button_add);

        mRecyclerView = findViewById(R.id.recyclerView1);

        arrayList = new ArrayList<RowItems>();
        myAdapter = new RecyclerViewAdapter();

        linearLayoutManager = new LinearLayoutManager(MainActivity.this, VERTICAL, false);

        mRecyclerView.setAdapter(myAdapter);

        mRecyclerView.setLayoutManager(linearLayoutManager);

        mButtonAdd.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                String no = mEno.getText().toString();
                String salary = mESalary.getText().toString();
                String name = mEName.getText().toString();

                RowItems rowItems = new RowItems(no, salary, name);

                arrayList.add(rowItems);
                myAdapter.notifyDataSetChanged();
                mEno.setText(" ");
                mESalary.setText(" ");
                mEName.setText(" ");
                mEno.requestFocus();
            }
        });
    }
}

// row_items.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"
    android:orientation="horizontal">

    <TextView    
    android:layout_width="wrap_content"  
      android:layout_height="wrap_content" 
       android:text="eno"    
    android:id="@+id/tv1"   
     android:textSize="16sp" 
       android:padding="4dp"/>

    <TextView   
     android:layout_width="wrap_content"  
      android:layout_height="wrap_content" 
       android:text="ename"   
     android:id="@+id/tv2"   
     android:layout_marginLeft="12dp" 
       android:textSize="16sp" 
       android:padding="4dp"/>

    <TextView    
    android:layout_width="wrap_content"   
     android:layout_height="wrap_content"
        android:text="esalary"    
    android:layout_marginLeft="12dp"
        android:id="@+id/tv3" 
       android:textSize="16sp" 
       android:padding="4dp"/>
</LinearLayout>

// RowItems.java
package com.krishanandroid.recyclerviewcustomadapter;

/** * Created by user on 9/13/2018. */// Bean classpublic class RowItems {
    String eno, ename, esalary;

    // constructors    public RowItems(String eno, String ename, String esalary) {
        this.eno = eno;
        this.ename = ename;
        this.esalary = esalary;
    }

    public String getEno() {
        return eno;
    }

    public void setEno(String eno) {
        this.eno = eno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getEsalary() {
        return esalary;
    }

    public void setEsalary(String esalary) {
        this.esalary = esalary;
    }
}
Live Demo: https://www.youtube.com/watch?v=K9jVvwQ1MPs




No comments:

Post a Comment