我在这里使用库"recyclerview-stickyheaders"链接:https://github.com/eowise/recyclerview-stickyheaders一切都好,我可以't catch touch event by .setOnHeaderClickListener(this) use StickyHeadersBuilder class. But I can' t,我不会工作 . *在MainActivity中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.rv_timeline);
adapterRecyclerView = new AdapterRecyclerTimeline(getApplicationContext(), getData());
adapterRecyclerView.setClickListener(this);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
recyclerView.setItemAnimator(new DefaultItemAnimator());
adapterHeader = new AdapterTimelineHeader(getApplicationContext(), getData());
adapterHeader.setClickListener(this);
recyclerHeader = new StickyHeadersBuilder()
.setAdapter(adapterRecyclerView)
.setRecyclerView(recyclerView)
.setStickyHeadersAdapter(adapterHeader)
.setOnHeaderClickListener(this)
.build();
recyclerView.setAdapter(adapterRecyclerView);
recyclerView.addItemDecoration(recyclerHeader);
}
@Override
public void onHeaderClick(View header, long headerId) {
Toast.makeText(getApplicationContext(), "Header Clicked LIB", Toast.LENGTH_SHORT).show();
}
@Override
public void headerClicked(View view, int position) {
Toast.makeText(getApplicationContext(), "Header Clicked MANUAL", Toast.LENGTH_SHORT).show();
}
- 在AdapterHeader中
公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener {RelativeLayout profile; TextView tvProfileName; TextView btnFollow;
public ViewHolder(View itemView) {
super(itemView);
profile = (RelativeLayout) itemView.findViewById(R.id.profile);
tvProfileName = (TextView) itemView.findViewById(R.id.tv_profile_name);
btnFollow = (TextView) itemView.findViewById(R.id.btn_follow);
btnFollow.setOnClickListener(this);
L.m("Set Listener FOLLOW");
}
@Override
public void onClick(View v) {
if (clickListener != null) {
L.m("Do Click FOLLOW");
clickListener.headerClicked(v, getPosition());
}
}
public interface ClickListener {public void headerClicked(View view,int position); }
public void setClickListener(ClickListener clickListener)
- 谢谢大家!
1 回答
这个库实际上并没有向屏幕添加任何视图 - 只将 pixel by pixel 视图复制到画布 . 这是代码: