recycleview 点击条目事件 +拦截器


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) {


            }
        });
    }




}
拦截器使用 这个私人 可以不用看



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值