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);
}
}
“`