dependencies {
compile 'com.android.support:recyclerview-v7:23.0.+'
}
//添加布局管理器,Orientation默认是纵向的,所以我们在此需要手动指定一下 LinearLayoutManager layoutManager = new LinearLayoutManager(context); layoutManager.setOrientation(OrientationHelper.HORIZONTAL); recyclerView.setLayoutManager(layoutManager); //设置recyclerView标记,如果确定内容的高度都一致,设置为true,提高内容渲染效率;(如果高度不确定系统要自己适配高度) recyclerView.setHasFixedSize(true); //设置adapter HRecyclerViewAdapter adapter = new HRecyclerViewAdapter(context, images); recyclerView.setAdapter(adapter);
public class HRecyclerViewAdapter extends RecyclerView.Adapter<HRecyclerViewAdapter.MyViewHolder>{
private Context context;
private int[] images;
private OnItemClickListener onItemClickListener;
public HRecyclerViewAdapter(Context context, int[] images) {
this.context=context;
this.images=images;
}
//重写onCreateViewHolder方法,返回一个自定义的ViewHolder(当RecyclerView需要一个ViewHolder时会回调该方法,如果有可复用的View不会回调)
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_hrecycler, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
//填充onCreateViewHolder方法返回的holder中的控件(当一个View需要出现在屏幕上时,该方法会被回调,我们需要再该方法中根据数据来更改视图)
public void onBindViewHolder(final MyViewHolder holder, int position) {
holder.iv.setBackgroundResource(images[position]);
if(onItemClickListener!=null){
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int index = holder.getLayoutPosition();
//自定义监听第三步
onItemClickListener.onItemClick(index);
}
});
}
}
//获取数据的数量(告诉RecyclerView有多少个视图需要显示)
public int getItemCount() {
return images.length;
}
//自定义的ViewHolder,持有每个Item的的所有界面元素
public class MyViewHolder extends RecyclerView.ViewHolder{
public ImageView iv;
public MyViewHolder(View itemView) {
super(itemView);
iv= (ImageView) itemView.findViewById(R.id.imageview);
}
}
//自定义监听第二步
public void setOnItemClickListener(OnItemClickListener onItemClickListener){
this.onItemClickListener=onItemClickListener;
}
//自定义监听第一步
public interface OnItemClickListener{
void onItemClick(int position);
}
}
adapter.setOnItemClickListener(new HRecyclerViewAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
ToastUtils.showStaticToast(context,"当前点击的是第"+(position+1)+"张图片");
}
});
//添加头布局(必须在设置完布局管理器再添加头布局和脚布局) View headerView = View.inflate(this, R.layout.headerview, null); myRecyclerView.addHeaderView(headerView); //添加脚布局 View footView = View.inflate(context, R.layout.footview, null); myRecyclerView.addFooterView(footView);
//添加滑动监听
myRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
//当RecyclerView的滑动状态改变时触发
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
//当RecyclerView滑动时触发(类似点击事件的MotionEvent.ACTION_MOVE)
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visible = layoutManager.getChildCount();//当天页面显示的条目个数
int total = layoutManager.getItemCount();//当前一共多少个条目
int past= layoutManager.findFirstCompletelyVisibleItemPosition();//布局上面被当住多少个条目
//当活动到最后一个条目时加载更多数据
if ((visible + past) >= total){
<span style="white-space:pre"> </span>//发送handler加载数据
handler.sendEmptyMessageDelayed(1,1000);
}
}
});
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有