我使用RecyclerView创建列表,我经历了很多苦难,因为我看到了实现OnClickListener的不同方法,并且评论说非常耦合,非常棘手等等。
大约几天想着如何实现它,我做到了。
在我的Fragment上,实现View.OnClickListener和onClickEvent,当我实现RecyclerView.Adapter时,在构造函数中传递View.OnClickListener引用,如下所示:
public RecyclerViewRepoListAdapter(View.OnClickListener fragmentListener, List<Repos> repoList){
if (repoList != null){
this.reposList = repoList;
this.fragmentListener = fragmentListener;
}
}
之后,当我为不同的列表组件创建Holder时,我将Listener注册到每个(在本例中)LinearLayout,如下所示:
@Override
public ListItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//Inflate the corresponding layout
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_repositories, parent, false);
//OnClickListener
itemView.setOnClickListener(fragmentListener);
//Here modify the view like margins, paddings, view size and layout parameters
//return the ViewHolder
return new ListItemViewHolder(itemView);
}
我的猜测是,您对此实施有何看法?
如果没问题,我希望这有助于另一个。