寻找控件,设置布局管理器
recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
recyclerView的适配器
public class RecyclerAdapter extends RecyclerView.Adapter { private LayoutInflater layoutInflater; private DisplayImageOptions options; //imageryloader加载图片使用 private List<DaoBean.ResultBean.DataBean> list; private Context context; public RecyclerAdapter(Context context,List<DaoBean.ResultBean.DataBean> list) { this.context = context; this.list = list; layoutInflater = LayoutInflater.from(context); }
private ItemClickListener ClickListener;
//点击事件 public RecyclerAdapter setClickListener(ItemClickListener ClickListener){ this.ClickListener = ClickListener; return this; }
//点击事件的接口 public interface ItemClickListener{ void OnItemClick(View view,int position); }
/*private final int PIC1 = 0; private final int PIC2 = 1; @Override public int getItemViewType(int position) { if (list.get(position).getThumbnail_pic_s() != null && list.get(position).getThumbnail_pic_s02() == null && list.get(position).getThumbnail_pic_s03() == null){ return PIC1; }else if (list.get(position).getThumbnail_pic_s() != null && list.get(position).getThumbnail_pic_s02() != null && list.get(position).getThumbnail_pic_s03() != null){ return PIC2; }else{ return 0; } }*/ 多条目时添加这个方法,一般不需要
//加载条目的布局文件 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View inflate; if (viewType == PIC1){ inflate = View.inflate(parent.getContext(), R.layout.item1, null); return new Myviewholder(inflate); }else if (viewType == PIC2){ inflate = View.inflate(parent.getContext(), R.layout.item2, null); return new Myviewholder2(inflate); } return null; }
private OnLongItemListener onLongItemListener;//长按事件 public void setOnLongItemListener(OnLongItemListener onLongItemListener) { this. onLongItemListener = onLongItemListener; } public interface OnLongItemListener { void onClick(View v, int position, String str); }//给条目的控件添加数据 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { int itemViewType = getItemViewType(position); switch (itemViewType) { case PIC1: final Myviewholder myviewholder = (Myviewholder) holder; myviewholder. textView.setText( list.get(position).getTitle()); ImageLoader. getInstance().displayImage( list.get(position).getThumbnail_pic_s(),myviewholder. imageView, options);
//给条目中图片添加点击事件
if (ClickListener != null){
myviewholder.imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); Log.e("TAG_img2","图片"+position); ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder.imageView, "alpha", 1f, 0.1f, 1f); anim.setDuration(3000);// 动画持续时间 anim.start(); } }); } break; case PIC2: final Myviewholder2 myviewholder2 = (Myviewholder2) holder; myviewholder2.textView2.setText(list.get(position).getTitle()); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),myviewholder2.imageView2,options); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),myviewholder2.imageView3,options); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),myviewholder2.imageView4,options); Log.e("IMG","IMG"+list.get(position).getThumbnail_pic_s()+"****"+list.get(position).getThumbnail_pic_s02()+"****"+list.get(position).getThumbnail_pic_s03());
//给条目中图片添加点击事件
if (ClickListener != null){ myviewholder2.imageView2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); Log.e("TAG_img2","图片"+position); ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder2.imageView2, "alpha", 1f, 0.1f, 1f); anim.setDuration(3000);// 动画持续时间 anim.start(); } }); myviewholder2.imageView3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); Log.e("TAG_img2","图片"+position); ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder2.imageView3, "alpha", 1f, 0.1f, 1f); anim.setDuration(3000);// 动画持续时间 anim.start(); } }); myviewholder2.imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); Log.e("TAG_img2","图片"+position); ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder2.imageView4, "alpha", 1f, 0.1f, 1f); anim.setDuration(3000);// 动画持续时间 anim.start(); } }); } break; } } @Override public int getItemCount() { return list.size(); } //获取条目中控件 class Myviewholder extends RecyclerView.ViewHolder{ private final TextView textView; private final ImageView imageView; public Myviewholder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); imageView = itemView.findViewById(R.id.imageView);
//给条目添加长按点击事件 itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (onLongItemListener != null) { onLongItemListener.onClick(v, getLayoutPosition(), String.valueOf(list.get(getLayoutPosition()))); } return false; } }); } } class Myviewholder2 extends RecyclerView.ViewHolder{ private final TextView textView2; private final ImageView imageView2; private final ImageView imageView3; private final ImageView imageView4; public Myviewholder2(View itemView) { super(itemView); textView2 = itemView.findViewById(R.id.textView2); imageView2 = itemView.findViewById(R.id.imageView2); imageView3 = itemView.findViewById(R.id.imageView3); imageView4 = itemView.findViewById(R.id.imageView4); itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (onLongItemListener != null) { onLongItemListener.onClick(v, getLayoutPosition(), String.valueOf(list.get(getLayoutPosition()))); } return false; } }); } }
}
最后在配置完适配器后加
//回调点击
recyclerAdapter.setClickListener(new RecyclerAdapter.ItemClickListener() { @Override public void OnItemClick(View view, int position) { Log.e("TAG_img1","图片"+position); } });
//回调长按监听 recyclerAdapter.setOnLongItemListener(new RecyclerAdapter.OnLongItemListener() { @Override public void onClick(View v, final int position, String str) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("提示") .setTitle("是否确认删除?") .setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { data.remove(position); recyclerAdapter.notifyDataSetChanged(); } }) .setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this, "已取消删除", Toast.LENGTH_SHORT).show(); } }) .create() .show(); } }); }