对应的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(); } }); } }