Adapter类里写入 定义外面就可以
//定义如下接口 一 public interface OnItemClieckLinster{ void onItemClickListener(View view , int pos); void onItemLongClickListener(View view , int pos); } private OnItemClieckLinster onItemClieckLinster; public void setOnItemClieckLinster(OnItemClieckLinster listener){ this.onItemClieckLinster = listener; }
onBindViewHolder里写入这些 注意int position改为final int position
holder的话直接就MyAdapter.ViewHolder holder ctrl+回车定义就好
public void onBindViewHolder(final MyAdapter.ViewHolder holder, final int position) {
if(onItemClieckLinster != null){ //onitemclicklistener holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onItemClieckLinster.onItemClickListener(holder.itemView , position); } }); //onitemlongclicklistener holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { onItemClieckLinster.onItemLongClickListener(holder.itemView , position); return false; } }); }最后主类写 切记 adapter一定要与你定义接口的Adapter类是同一个 要不然找不到 Madapter adapter 我自己定义接口类adapter.setOnItemClieckLinster(new MyAdapter.OnItemClieckLinster() { @Override public void onItemClickListener(View view, int pos) { Intent intetnt=new Intent(getActivity(),Main2Activity.class); startActivity(intetnt); } @Override public void onItemLongClickListener(View view, int pos) {Toast.makeText(getActivity(), "long click" + pos , Toast.LENGTH_SHORT).show(); }//我用的是XRecycleview 就没有出来点击事件 用recycleview事件就有点击事件 应该是我的错误});
public class MainActivity extends AppCompatActivity { String path="http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0 "; ImageView img; TextView text,text2; RecyclerView recyclerView; //请求数据集合 MyAdapter adapter; Banner banner; List<String>listbanner =new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView=(RecyclerView)findViewById(R.id.recycleview); img=(ImageView)findViewById(R.id.img); text=(TextView)findViewById(R.id.text3); text2=(TextView)findViewById(R.id.text3); banner=(Banner)findViewById(R.id.banner); getData2(); getData(); } public void getData(){ OkHttp3Utils.doGet(path, new GsonObjectCallback<bean>() { @Override public void onUi(bean bean) { MyAdapter adapter = new MyAdapter(bean.getSong_list(),MainActivity.this); recyclerView.setAdapter(adapter);//设置适配器 // mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(4, //StaggeredGridLayoutManager.HORIZONTAL)); // mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(),1)); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL)); // LinearLayoutManager man=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); //recyclerView.setLayoutManager(man); //recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST)); recyclerView.addItemDecoration(new DividerItemDecoration(MainActivity.this, DividerItemDecoration.VERTICAL)); adapter.setOnItemClieckLinster(new MyAdapter.OnItemClieckLinster() { @Override public void onItemClickListener(View view, int pos) { Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } @Override public void onItemLongClickListener(View view, int pos) { Toast.makeText(MainActivity.this, "long click" + pos , Toast.LENGTH_SHORT).show(); } }); } @Override public void onFailed(Call call, IOException e) { } }); } public void getData2(){ OkHttp3Utils.doGet(path, new GsonObjectCallback<bean>() { private List<bean.SongListBean> song_list; @Override public void onUi(bean bean) { song_list = bean.getSong_list(); for(int i=0;i<song_list.size();i++){ listbanner.add(song_list.get(i).getPic_big()); } banner.setImageLoader(new GlideImageLoader()); //设置图片集合 banner.setImages(listbanner); //banner设置方法全部调用完毕时最后调用 banner.start(); } @Override public void onFailed(Call call, IOException e) { } }); } }
拦截器使用 这个私人 可以不用看