我的总结之RecyclerView

     RecycleView是V7包下的,能够说是ListView的升级版,由于ListView是不支持横向滑动,而RecycleView既支持横向也支持纵向滑动,使用很方便,可是有一点坑爹的就是没有条目的点击事件,须要咱们本身来写ide

    首先Activity的布局以下:
布局

    

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

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

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

    

    固然这里的setOrientation也能够设置为horizontal的,这样就是横向的接口

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

    onCreatViewHolder()就是建立ViewHolderget

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

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

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);
相关文章
相关标签/搜索