2016-05-03 16 views
0

私はRecyclerViewにitemsのリストがあるところで作業しています。アイテムをクリックすると、アイテムの詳細が表示され、別のアクティビティが開始され、アクティビティのTexviewが記入されます。詳細。 Recyclerviewでonclicklistenerを実装するためのいくつかのメソッドを実装しましたが、何も機能しませんでした。Android Recyclerview Onclicklistenerが機能しない

以下は最新のものです。

は...ありがとう

マイインタフェース:

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

マイ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()); 
     } 
    } 



} 

主な活動:

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; 

    } 

} 
+0

はここを見て:http://stackoverflow.com/a/26196831/3467204 – WannaBeGeek

+0

この1にも便利です。 :http://stackoverflow.com/a/24471410/1140447 – AppleDroid

+0

@WannaBeGeek @ AndroidME返信いただきありがとうございます。 –

答えて

2

あなたはクリックリスナーを登録していません。 View_Holderコンストラクタに登録してください。 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); 
     } 
+0

それは働いた...ありがとう –

関連する問題