我正在开发聊天应用程序。它具有回复动作的功能(例如Telegram / WhatsApp)。当用户单击回复的消息时,RecyclerView应滚动到声明的位置。但是,如果我设置了recyclerview隐藏项目的位置,则应用会抛出NullPoinerException。它仅适用于可见项目。
holder.replyContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mRecyclerView.smoothScrollToPosition(m.content.getReply().getPosition());
View view = mRecyclerView.
findViewHolderForAdapterPosition(m.content.getReply().getPosition())
.itemView.findViewById(R.id.selected);
view.setVisibility(View.VISIBLE);
view.startAnimation(AnimationUtils.loadAnimation(mActivity, R.anim.fade_out));
}
});
答案 0 :(得分:1)
我已修复它,滚动完成后必须调用方法的不可见项。因此,我在RecyclerView中添加了侦听器:
RecyclerView.OnScrollListener listener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
RecyclerView.ViewHolder holder = (RecyclerView.ViewHolder)
mRecyclerView.findViewHolderForAdapterPosition(replyPosition);
if(holder != null) {
View view = holder.itemView.findViewById(R.id.selected);
view.setVisibility(View.VISIBLE);
view.startAnimation(AnimationUtils.loadAnimation(mActivity,
R.anim.fade_out));
}
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
};
mRecyclerView.addOnScrollListener(listener);
mRecyclerView.smoothScrollToPosition(replyPosition);