Java 如何更改RecyclerView隐藏项的可见性?
我正在开发聊天应用程序。它有一个功能,即回复操作(如电报/WhatsApp)。当用户单击回复消息时,RecyclerView应滚动至声明的位置。但若我设置了recyclerview的隐藏项的位置,应用程序就会抛出一个NullPoinerException。它仅适用于可见项Java 如何更改RecyclerView隐藏项的可见性?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在开发聊天应用程序。它有一个功能,即回复操作(如电报/WhatsApp)。当用户单击回复消息时,RecyclerView应滚动至声明的位置。但若我设置了recyclerview的隐藏项的位置,应用程序就会抛出一个NullPoinerException。它仅适用于可见项 holder.replyContainer.setOnClickListener(new View.OnClickListener() { @Override p
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));
}
});
我已经修复了它,方法的不可见项必须在滚动完成后调用。因此,我将listener添加到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);
共享您的错误日志。致命异常:主PID:26983 java.lang.NullPointerException:尝试读取空对象引用上的字段“android.view.view androidx.recyclerview.widget.recyclerview$ViewHolder.itemView”。您得到了
空指针异常
,因为findViewHolderForAdapterPosition(m.content.getReply().getPosition())
为您提供null
。我知道,如何更改recyclerview的隐藏项?你对做这件事有什么建议吗?(回复特定消息)您是否尝试过mRecyclerView.smoothScrollToPosition(m.content.getReply().getPosition()-1);