个人总结之RecyclerView
个人总结之RecyclerView
Magic_锋 发表于2年前
个人总结之RecyclerView
  • 发表于 2年前
  • 阅读 149
  • 收藏 2
  • 点赞 1
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

     RecycleView是V7包下的,可以说是ListView的升级版,因为ListView是不支持横向滑动,而RecycleView既支持横向也支持纵向滑动,使用很方便,但是有一点坑爹的就是没有条目的点击事件,需要我们自己来写

    首先Activity的布局如下:

    

    Item的布局我只是用一个简单的TextView来写的,所以就不传图了;

    然后在Activity中的onCreat方法中,获取到RecyclerView控件,然后设定Layout管理器

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

    

    当然这里的setOrientation也可以设置为horizontal的,这样就是横向的

    MyAdaper就是适配器,他要继承的是RecyclerView.Adaper,主要重写里面的onCreatViewHolder(),onBindViewHolder(),getItemCount()这三个方法,

    onCreatViewHolder()就是创建ViewHolder

    onBindViewHolder()就是绑定ViewHolder,和数据绑定

    getItemCount()就是获取总的条目数

private class MyAdapter extends RecyclerView.Adapter {
    @Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.item, null);
    Holder holder = new Holder(view);
    return holder;
}

    @Override
public void onBindViewHolder( RecyclerView.ViewHolder holder, final int position) {
    final Holder h = (Holder) holder;
     h.setData(position);
}

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

class Holder extends RecyclerView.ViewHolder {
    TextView mtv;

    public Holder(View view) {
        super(view);
        mtv = (TextView) view.findViewById(R.id.tv);
    }

    public void setData(int position) {
        mtv.setText(list.get(position).getName());
    }
}

这样就可以了,但是有一点就是item没有条目点击事件,如果想要用的话,我们只能自己来写个接口了,因为我的适配器是写在Activity中的,也就是和OnCreat()在一个类中,所以如下:

    首先在全局中写个接口

public interface  onItemClickListener{
    void onItemClick(View vi,int position);
}

    然后在适配器MyAdapter中

private onItemClickListener mOnItem;

public void onItemClickListener(onItemClickListener mOnItemClickListener){
    this.mOnItem = mOnItemClickListener;
}

    然后在onBindViewHolder()方法

@Override
public void onBindViewHolder( RecyclerView.ViewHolder holder, final int position) {
    final Holder h = (Holder) holder;
     h.setData(position);

    if(mOnItem != null){
      h.mtv.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
                mOnItem.onItemClick(h.mtv,position);
          }
      });
    }
}

这就可以了,用的话在new 出适配器的时候设置点击事件

MyAdapter myAdapter = new MyAdapter();
    myAdapter.onItemClickListener(new onItemClickListener() {
        @Override
        public void onItemClick(View vi, int position) {
            Toast.makeText(Priactise.this, "这是" + position, Toast.LENGTH_SHORT).show();
        }
    });
mRecycle.setAdapter(myAdapter);


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 43
码字总数 26038
×
Magic_锋
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: