【发布时间】:2019-08-06 15:15:31
【问题描述】:
我正在使用 Recycleview 在 Horizontal RecyclerView 中显示联系人图像和姓名,并且加载正常。我已经实现了单击侦听器,它在单击时打开新活动并根据 RecyclerView 的位置显示用户的详细信息。
但我希望 RecyclerView 自动滚动,这样每 5 秒,recycleview 就会自动滚动一次,我在下面的代码中实现了它,它工作正常。
top.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int lastItem = llm.findLastCompletelyVisibleItemPosition();
if(lastItem == llm.getItemCount()-1){
mHandler.removeCallbacks(SCROLLING_RUNNABLE);
Handler postHandler = new Handler();
postHandler.postDelayed(new Runnable() {
@Override
public void run() {
top.setAdapter(null);
top.setAdapter(staggeredBooksAdapter);
mHandler.postDelayed(SCROLLING_RUNNABLE, 5000);
}
}, 5000);
}
}
});
mHandler.postDelayed(SCROLLING_RUNNABLE, 5000);
但是现在,当我点击任何联系人时,没有任何事情发生,就像以前启动带有用户详细信息的新活动一样。但是当我再次删除滚动监听器时,我可以点击 RecyclerView 项目。
我的 RecyclerView 是
final LinearLayoutManager llm = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
top.setLayoutManager(llm);
top.setHasFixedSize(true);
staggeredBooksAdapter = new TopAdapter(this, bookslist);
top.setAdapter(staggeredBooksAdapter);
从适配器类是
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
database = FirebaseDatabase.getInstance();
g = bookslist.get(position);
holder.teacher_location.setText(g.getBlocas());
holder.teacher_name.setText(g.getSellername());
holder.profile_details.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
g = bookslist.get(position);
Intent intent = new Intent(v.getContext(), gender_details.class);
intent.putExtra(KEY_IMAGE, g.getPics());
v.getContext().startActivity(intent);
}
});
我该如何解决这个问题..提前谢谢。
【问题讨论】:
-
使用 addOnScrollListener 实现
onScrollStateChanged并记录状态。点击recyclerView项目时查看状态是空闲还是滚动 -
你能给我看一些你建议的例子吗?
标签: java android android-recyclerview adapter