android关于RecyclerView的使用

来源:互联网 发布:男士牛仔衣搭配知乎 编辑:程序博客网 时间:2024/05/16 02:13

只说要点。

1、自定义的ViewHolder需要继承RecyclerView-V7包里的ViewHolder ,实现构造方法。

2、自定义的adapter需要继承RecyclerView-V7包里的Adapter<T>,也就是RecyclerView-V7包里的Adapter<自定义的ViewHolder>。需要实现:getItemCount方法、onCreateViewHolder方法(返回自定义的ViewHolder)、onBindViewHolder方法

3、定义LayoutManager ,LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);

4、可以设置LayoutManager 的方向,linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);

5、把LayoutManager 给RecyclerView,mRecyclerView.setLayoutManager(linearLayoutManager);

6、最后是绑定适配器,mRecyclerView.setAdapter(adapter);



下面是适配器的一个example:


public class GalleryAdapter extends Adapter<GalleryAdapter.MViewHolder> {

/**
* ItemClick的回调接口
*/
public interface OnItemClickLitener {
void onItemClick(View view, int position);
}

private OnItemClickLitener mOnItemClickLitener;

public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {
this.mOnItemClickLitener = mOnItemClickLitener;
}

/***************************************************/
private LayoutInflater mInflater;
private List<Integer> mDatas;

public GalleryAdapter(Context context, List<Integer> datats) {
mInflater = LayoutInflater.from(context);
mDatas = datats;
}

public static class MViewHolder extends ViewHolder {
public MViewHolder(View inflateView) {
super(inflateView);
mImg = (ImageView) inflateView
.findViewById(R.id.id_index_gallery_item_image);
}

ImageView mImg;
TextView mTxt;
}

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

@Override
public MViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = mInflater.inflate(R.layout.activity_index_gallery_item,
viewGroup, false);
MViewHolder viewHolder = new MViewHolder(view);

return viewHolder;
}

@Override
public void onBindViewHolder(final MViewHolder viewHolder, final int i) {
viewHolder.mImg.setImageResource(mDatas.get(i));

// 如果设置了回调,则设置点击事件
if (mOnItemClickLitener != null) {
viewHolder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mOnItemClickLitener.onItemClick(viewHolder.itemView, i);
}
});

}

}

}

0 0