Mallisetti Mrudhuhas
Mallisetti Mrudhuhas

Reputation: 59

Android Recyclerview Onclicklistener not working

I am working o a project where i have RecyclerView with list of items.And when i click on a item it should get the details of the item and start another activity and fill the Texview of the activity with the details. I have implemented several methods for implementing onclicklistener on Recyclerview but nothing worked

The below one is the latest one i used.It dosent work too.

Thank you...

My InterFace :

public interface ItemClickListener
{
    void onItemClick(View view,int position);
}

My Adapterclass :

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.TextView;
import android.widget.Toast;

import java.util.Collections;
import java.util.List;

/**
 * Created by mrudu on 01-05-2016.
 */
public class mainrow_adapter extends RecyclerView.Adapter<mainrow_adapter.View_Holder>
{
    List<Person_details> list = Collections.emptyList();

    Context context;
    public mainrow_adapter(List<Person_details> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public mainrow_adapter.View_Holder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_rowlayout,parent,false);
        View_Holder holder = new View_Holder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(mainrow_adapter.View_Holder holder, int position)
    {
        Person_details person_details = new Person_details();
        holder.nametext.setText(list.get(position).getName());
        holder.amounttext.setText(list.get(position).getAmount());
        holder.setClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Person_details selectedPerson = list.get(position);
                String name = selectedPerson.getName();
                Toast.makeText(context,name,Toast.LENGTH_SHORT).show();
            }
        });

    }

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

    public class View_Holder extends RecyclerView.ViewHolder implements View.OnClickListener
    {
        TextView nametext,amounttext;
        private ItemClickListener clickListener;
        public View_Holder(View itemView) {
            super(itemView);
            nametext = (TextView)itemView.findViewById(R.id.Name);
            amounttext = (TextView)itemView.findViewById(R.id.Amount);
        }
        public void setClickListener(ItemClickListener itemClickListener)
        {
            clickListener = itemClickListener;
        }

        @Override
        public void onClick(View view)
        {
          clickListener.onItemClick(view,getAdapterPosition());
        }
    }



}

Main activity :

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainList extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mainlist);
        final Intent adnew = new Intent(this,Add_Person.class);
        RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
        List<Person_details> list = filldata();
        mainrow_adapter adapter = new mainrow_adapter(list,getApplication());
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        RecyclerView.ItemAnimator animator = new DefaultItemAnimator();
        animator.setAddDuration(1000);
        animator.setRemoveDuration(1000);
        recyclerView.setItemAnimator(animator);
        FloatingActionButton floatingActionButton = (FloatingActionButton)findViewById(R.id.addnewfab);
        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainList.this, "Add new Log", Toast.LENGTH_SHORT).show();
               startActivity(adnew);

            }
        });


    }

    public List<Person_details>  filldata()
    {
        List<Person_details> data = new ArrayList<>();
        data.add(new Person_details("Mrudhu","9959461221","Glp","2500"));
        data.add(new Person_details("Ram","9959461221","Glp","2820"));
        data.add(new Person_details("Syam","9959461221","Glp","8000"));
        data.add(new Person_details("Shekar","9959461221","Glp","320"));
        data.add(new Person_details("Sharif","9959461221","Glp","836"));
        data.add(new Person_details("Rahul","9959461221","Glp","126"));
        data.add(new Person_details("Rohith","9959461221","Glp","50"));
        data.add(new Person_details("Manikanta","9959461221","Glp","55"));
        data.add(new Person_details("Ramesh","9959461221","Glp","198"));
        data.add(new Person_details("Ram","9959461221","Glp","162"));        

        return data;

    }

}

Upvotes: 0

Views: 728

Answers (1)

Umesh Singh Kushwaha
Umesh Singh Kushwaha

Reputation: 5741

You are not registering click listener. Register it in View_Holder constructor itemView.setOnClickListener(this);

 public View_Holder(View itemView) {
            super(itemView);
            nametext = (TextView)itemView.findViewById(R.id.Name);
            amounttext = (TextView)itemView.findViewById(R.id.Amount);
            itemView.setOnClickListener(this);
        }

Upvotes: 2

Related Questions