美文网首页
android recycleView点击事件(接口回调)

android recycleView点击事件(接口回调)

作者: top_coder | 来源:发表于2017-05-05 11:00 被阅读0次

    1.写一个接口

    2.让一个类去用这个接口,并进行接口回调:

         2.1 在类中声明该接口 并吃用该接口

    3.让回调的activity 去实现该接口

    adapter中的代码:

    packagecom.cmcc.recycleviewtest;

    importandroid.content.Context;

    importandroid.support.v7.widget.RecyclerView;

    importandroid.view.LayoutInflater;

    importandroid.view.View;

    importandroid.view.ViewGroup;

    importandroid.widget.TextView;

    importjava.util.List;

    /**

    * Created by PC on 2017/5/5.

    */

    public classMyAdapterextendsRecyclerView.Adapter {

    privateContextmContext;

    privateListmdata;

    OnItemlickListennerlistenner;//声明接口

    //给接口设置set方法

    public voidsetOnitemClickListenner(OnItemlickListenner listenner){

    this.listenner=listenner;

    }

    publicMyAdapter(Context context , List data) {

    this.mContext=context;

    this.mdata=data;

    }

    @Override

    publicMyAdapter.VieHolder onCreateViewHolder(ViewGroup parent,intviewType) {

    VieHolder holder =newVieHolder(LayoutInflater.from(mContext).inflate(R.layout.item_view, parent,false));

    returnholder;

    }

    @Override

    public voidonBindViewHolder(MyAdapter.VieHolder holder,intposition) {

    holder.tv.setText(mdata.get(position));

    }

    @Override

    public intgetItemCount() {

    returnmdata.size();

    }

    public classVieHolderextendsRecyclerView.ViewHolder {

    TextViewtv;

    publicVieHolder(View itemView) {

    super(itemView);

    tv= (TextView) itemView.findViewById(R.id.tv_item);

    //用这个接口,并进行接口回调

    itemView.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View view) {

    if(listenner!=null){

           listenner.onClick(view,getLayoutPosition(),mdata.get(getAdapterPosition()));

                              }

                       }

              });

       }

    }

    //.定义一个接口

    interfaceOnItemlickListenner{

    voidonClick(View view,intposition,String data);

           }

    }

    MainActivty代码

    packagecom.cmcc.recycleviewtest;

    importandroid.os.Bundle;

    importandroid.support.v7.app.AppCompatActivity;

    importandroid.support.v7.widget.LinearLayoutManager;

    importandroid.support.v7.widget.RecyclerView;

    importandroid.util.Log;

    importandroid.view.View;

    importandroid.widget.Toast;

    importjava.util.ArrayList;

    importjava.util.List;

    public class MainActivity extends AppCompatActivity  implements MyAdapter.OnItemlickListenner {

    RecyclerView mRecyclerView;

    Listdata;

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    mRecyclerView= (RecyclerView) findViewById(R.id.recycle_view);

    initData();

    mRecyclerView.setLayoutManager(newLinearLayoutManager(this));

    MyAdapter myAdapter =newMyAdapter(this,data);

    Log.i("MainActivity",data.size()+"");

    mRecyclerView.setAdapter(myAdapter);

    myAdapter.setOnitemClickListenner(this);

    }

    private voidinitData() {

    data=newArrayList<>();

    for(inti=0;i<40;i++){

    data.add("第"+i+"数据");

    }

    }

    @Override

    public voidonClick(View view,intposition, String data) {

    Toast.makeText(MainActivity.this,"点击了第:"+position,Toast.LENGTH_SHORT).show();

    }

    }

    相关文章

      网友评论

          本文标题:android recycleView点击事件(接口回调)

          本文链接:https://www.haomeiwen.com/subject/nddctxtx.html