我使用RecyclerView水平滚动项目。单击任何项目时,将选择该项目并更改其背景。我需要的是当选择项目时,它将滚动到中心。第一项将在开头居中。
任何意见将不胜感激。我的代码如下,但它并不是所有项目的中心。
recyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(getActivity(), recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, final int position) {
// TODO Handle item click
editAdapter.setSelection(position);
editAdapter.notifyDataSetChanged();
final int scrollX = (view.getLeft() - (center)) + (view.getWidth() / 2);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
recyclerView.scrollBy(scrollX, 0);
}
}, 100);
}
@Override
public void onLongItemClick(View view, int position) {
}
})
);
答案 0 :(得分:0)
创建一个像这样的接口
public interface NotifyPositionChange
{
public void scrollToPosition(int position);
}
在适配器的构造函数中传递一个额外的参数。
public YourAdapter(NotifyPositionChange notifyPositionChange)
{
this.notifyPosition=notifyPositionChange;
}
在适配器中选择项目时的接口调用方法
notifyPositionChange.scrollToPosition(position);
通过你当前的位置。 在您的活动中实现此接口并覆盖其方法。
@Override
public void scrollToPosition(int position) {
yourRecyclerView.getLayoutManager().smoothScrollToPosition(yourRecyclerView, null, position - 1);
}