RecycleView确实是一个好东东。它的使用大大提高了程序猿的开发效率,下面我为大家分享它的其中一个功能。如下
1,在adapter类中,需要创建两个点击事件和个监听事件。
public class ListenAdapter extends RecyclerView.Adapter<ListenAdapter.MyViewHolder> {
private Context context;
private List mlist;
private OnItemClick onItemClick;
public ListenAdapter( Context context, List<String> mlist) {
this.context = context;
this.mlist = mlist;
}
//定义设置点击事件监听的方法
public void setOnitemClickLintener(OnItemClick onItemClick) {
this.onItemClick = onItemClick;
}
//定义一个点击事件的接口
public interface OnItemClick {
void onAllItemClick(int position);
void onItemClick(ImageView ivIcon2);
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = View.inflate(context, R.layout.listen_adapter, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//在TextView的地方进行监听点击事件,并且实现接口
onItemClick.onAllItemClick(position);
}
});
holder.ivIcon2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClick.onItemClick(holder.ivIcon2);
}
});
}
@Override
public int getItemCount() {
return 20;
}
class MyViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.iv_icon)
ImageView ivIcon;
@BindView(R.id.text1)
TextView text1;
@BindView(R.id.iv_icon1)
ImageView ivIcon1;
@BindView(R.id.text2)
TextView text2;
@BindView(R.id.text3)
TextView text3;
@BindView(R.id.text4)
TextView text4;
@BindView(R.id.text5)
TextView text5;
@BindView(R.id.text6)
TextView text6;
@BindView(R.id.iv_icon2)
ImageView ivIcon2;
@BindView(R.id.re_layout)
RelativeLayout reLayout;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}
2,需要在主类中的activity或者fragment类中初始化适配器,并且调用LinearLayoutManager布局管理器,对adapter的引用和关联。以下就是核心代码
private void initRecycle() {
LinearLayoutManager linearLayout = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); //线性布局管理器
recyclerview.setLayoutManager(linearLayout);
listenAdapter = new ListenAdapter(getActivity(), mlist);
recyclerview.setAdapter(listenAdapter);
recyclerview.addItemDecoration(new SpacesItemDecoration(spanCount, spacing, includeEdge));
listenAdapter.setOnitemClickLintener(new ListenAdapter.OnItemClick() {
// @Override
// public void onItemClick(int position) {
// /*显示dialog/
// deleteDialog = new DeleteDialog(getActivity(), positiveListener, nagivateListener);
// deleteDialog.show();
// }
@Override
public void onAllItemClick(int position) {
/**跳转*/
Intent intent = new Intent(getActivity(), ListenItemActivity.class);
startActivity(intent);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onItemClick(ImageView ivIcon2) {
showPopWindow(ivIcon2);
}
});
}
如果觉得还行,请为我点赞,有不到之处请留言。谢谢