mvp 适配器里面接口回调 适配器定义接口 activity实现

对应的recylceview的适配器里面定义一个接口

  //    接口
    public interface OnItemClickLitener
    {
        void onItemClick(View view, int position);
        void onItemLongClick(View view , int position);
    }

    private OnItemClickLitener mOnItemClickLitener;

    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)
    {
        this.mOnItemClickLitener = mOnItemClickLitener;
    }

在对应的MainActivity里面进行实现 

  homeadper.setOnItemClickLitener(new HomeAdaper.OnItemClickLitener()
        {

            @Override
            public void onItemClick(View view, int position)
            {
                Toast.makeText(MainActivity.this, position + " click",
                        Toast.LENGTH_SHORT).show();


            }

            @Override
            public void onItemLongClick(View view, int position)
            {
                Toast.makeText(MainActivity.this, position + " long click",
                        Toast.LENGTH_SHORT).show();

            }
        });
为了 大家能够看得清楚 我就把我的适配器 和主页面 全部复制下来,供大家参考  我的事结合 MVP模式      所以 大家根据自己的需求即可

public class HomeAdaper extends RecyclerView.Adapter{
    Context context;
    List<News.DataBean> list;
    //    接口
    public interface OnItemClickLitener
    {
        void onItemClick(View view, int position);
        void onItemLongClick(View view , int position);
    }

    private OnItemClickLitener mOnItemClickLitener;

    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)
    {
        this.mOnItemClickLitener = mOnItemClickLitener;
    }




    public HomeAdaper(Context context, List<News.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
         MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.recylce,parent,false));
        return holder;
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
        MyViewHolder holder1 = (MyViewHolder) holder;
        holder1.tv.setText(list.get(position).getNews_title());


        holder1.draweeView1.setImageURI(list.get(position).getPic_url());
        //创建DraweeController
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                //重试之后要加载的图片URI地址
                .setUri(list.get(position).getPic_url())
                //设置点击重试是否开启
                .setTapToRetryEnabled(true)
                //动画播放
                .setAutoPlayAnimations(true)
                //设置旧的Controller
                .setOldController(holder1.draweeView1.getController())
                //构建
                .build();
        //设置DraweeController
        holder1.draweeView1.setController(controller);

        if (mOnItemClickLitener != null) {
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int pos = holder.getLayoutPosition();
                    mOnItemClickLitener.onItemClick(holder.itemView, pos);
                }
            });

        }

    }



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





    class   MyViewHolder extends RecyclerView.ViewHolder{
        SimpleDraweeView draweeView1;
        TextView tv;
        public MyViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.tv);
            draweeView1 = (SimpleDraweeView) itemView.findViewById(R.id.img);
        }
    }
}

下面的是MainActivity

public class MainActivity extends AppCompatActivity  implements IView {
 RecyclerView recycler;
 HomeAdaper homeadper;
 UserPresenter userPresenter;
 List<News.DataBean> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recycler = (RecyclerView)findViewById(R.id.recylce);
        recycler.setLayoutManager(new LinearLayoutManager(this));
        userPresenter = new UserPresenter(this);
        userPresenter.getUser(Api.HOME_URL);
    }


    @Override
    public void getNews(ArrayList<News.DataBean> list) {


        recycler.setAdapter(homeadper =new HomeAdaper(MainActivity.this,list));
        homeadper.setOnItemClickLitener(new HomeAdaper.OnItemClickLitener()
        {


            @Override
            public void onItemClick(View view, int position)
            {
                Toast.makeText(MainActivity.this, position + " click",
                        Toast.LENGTH_SHORT).show();




            }


            @Override
            public void onItemLongClick(View view, int position)
            {
                Toast.makeText(MainActivity.this, position + " long click",
                        Toast.LENGTH_SHORT).show();


            }
        });




    }
}




猜你喜欢

转载自blog.csdn.net/bbtianshi/article/details/79722869
今日推荐