Recyclerview 浅谈

RecyclerView 的出现 其实是谷歌工程师参考了大家对listview 的优化,才出现了这个控件,它与listView区别就是必须得继承它的
RecyclerView.ViewHolder,而不需要再去创建 ViewHolder;
实现的方式:
首先你得导入 compile ‘com.android.support:recyclerview-v7:23.3.0’
布局里面直接实现

Recyclerview  

            @Override
            public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
                GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams();
                int spanSize = layoutParams.getSpanSize();
                int spanIdex = layoutParams.getSpanIndex();//就是每一行的Item 的第几个元素 ,元素值从0 开始
                outRect.top = 20;//距离顶部的距离
                if (spanSize!= gridLayoutManager.getSpanCount()){
                        if(spanIdex ==1){
                            outRect.left = 10;//距离左边为10
                        }else {
                            outRect.right = 10;
                        }
                }
            }
        });
        //分割线

        recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));
`点击事件 必须自己写

public class SmpleAdater extends RecyclerView.Adapter {
private LayoutInflater layoutInflater;
private Context mContext;
private List listString;
private OnItemClickListener monItemClickListener;
private List listAdata = new ArrayList();

public SmpleAdater( Context mContext) {

    this.mContext = mContext;
    this.layoutInflater = LayoutInflater.from(mContext);

}
public  void  addList(List<AdpterData> A){
    listAdata = A;
}
public void addData(int pos){
    listString.add(pos,"test text");
    notifyItemChanged(pos);
}
public void delDate(int pos){
    listString.remove(pos);
    notifyItemChanged(pos);//更新指定的Item位置
}
@Override
public MyVliewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    Log.e("onCreateViewHolder","创建Vi'e'w'Holder");
    View view = layoutInflater.inflate(R.layout.item_layout,parent,false);
    MyVliewHolder myVliewHolder =  new MyVliewHolder(view);
    return myVliewHolder;
}

@Override
public void onBindViewHolder(final MyVliewHolder holder, final int position) {
    Log.e("onBindViewHolder","绑定'e'w'Holder");

    holder.textView.setText(listString.get(position));
    if(monItemClickListener!=null){
        holder.button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                monItemClickListener.onItemClikeLiset(holder.itemView,position);

            } });
        holder.button.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                monItemClickListener.onItemLongClikeList(holder.itemView,position);
                return false;
            }
        });
    }


}

@Override
public int getItemCount() {
    Log.e("getItemCount",listString.size()+"");
    return listString.size();
}

@Override
public int getItemViewType(int position) {
    return listAdata.get(position).Type;
}

public void setOnItemClickList(OnItemClickListener onItemClickList){
            this.monItemClickListener = onItemClickList;
}

public interface OnItemClickListener{
void onItemClikeLiset(View view,int position);
void onItemLongClikeList(View view,int position);
}
}
class MyVliewHolder extends RecyclerView.ViewHolder{
TextView textView;
Button button;
public MyVliewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.textItem);
button = (Button) itemView.findViewById(R.id.buttonItem1);
}
}
“`

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值