Android RecyclerView从不关注最后一个元素

Android RecyclerView从不关注最后一个元素,android,android-recyclerview,Android,Android Recyclerview,我试图将recyclerview的最后一个元素设置为在用户拍照时完全可见 所以我使用了recyclerview.smoothScrollToPosition(recycler.getAdapter().getItemCount()-1) 但是我总是看到倒数第二张照片。即使我将“-1”更改为“+1”或“+4”甚至“+15” 我的recyclerView首先滚动到最后一个元素,然后向数组中添加新元素。这样,它就不会真正进入最后一个元素。应该是相反的 有人能帮忙吗?我错过什么了吗 if (succes

我试图将recyclerview的最后一个元素设置为在用户拍照时完全可见

所以我使用了recyclerview.smoothScrollToPosition(recycler.getAdapter().getItemCount()-1)

但是我总是看到倒数第二张照片。即使我将“-1”更改为“+1”或“+4”甚至“+15”

我的recyclerView首先滚动到最后一个元素,然后向数组中添加新元素。这样,它就不会真正进入最后一个元素。应该是相反的

有人能帮忙吗?我错过什么了吗

if (success) {
                File mFile = new File(mDir, new SimpleDateFormat("yyyyMMdd-HHmmss", Locale.getDefault()).format(new Date()) + ".jpg");

                mImageCapture.takePicture(mFile,
                        new ImageCapture.OnImageSavedListener() {
                            @Override
                            public void onImageSaved(@NonNull File file) {
                                mListOfPhotos.add(file.getAbsolutePath());

                                mAdapter.setmListOfPhotos(mListOfPhotos);
                                mRecyclerView.setAdapter(mAdapter);

                                actualNumberOfPhoto();

                                mRecyclerView.smoothScrollToPosition(mRecyclerView.getAdapter().getItemCount() - 1);
                                mAdapter.notifyDataSetChanged();
                            }

                            @Override
                            public void onError(@NonNull ImageCapture.ImageCaptureError imageCaptureError, @NonNull String message, @Nullable Throwable cause) {
                                String mMessage = "Photo capture failed: " + message;
                                Toast.makeText(CameraActivity.this, mMessage, Toast.LENGTH_SHORT).show();

                                assert cause != null;
                                cause.printStackTrace();
                            }
                        });
            }

编辑:

编码为ActualNumber of photo()

private void实际照片数(RecyclerView RecyclerView){
mNumberOfPhotoTV.setText(getResources().getString(R.string.minPhotos,mListOfPhotos.size());
mIDDemande=mSharedPreferences.getInt(ConstantsClass.EXTRA_ID_应用程序,0);
if(mIDDemande!=0){
如果(mListOfPhotos.size()>0){
mSendPhotoFAB.setVisibility(View.VISIBLE);
}else if(mListOfPhotos.size()<1){
mSendPhotoFAB.setVisibility(View.GONE);
}
}else if(mListOfPhotos.size()>=6){
mSendPhotoFAB.setVisibility(View.VISIBLE);
}else if(mListOfPhotos.size()<6){
mSendPhotoFAB.setVisibility(View.GONE);
}
}

您的代码应该是这样的:

@Override
public void onImageSaved(@NonNull File file) {
    mListOfPhotos.add(file.getAbsolutePath());

    mAdapter.setmListOfPhotos(mListOfPhotos);

    mRecyclerView.setAdapter(mAdapter);

    mRecyclerView.smoothScrollToPosition(mListOfPhotos.size());

    //mAdapter.notifyDataSetChanged();
}

调用notifyDataSetChanged方法下面的smoothScroll方法。您在
ActualNumber of Photo(MRECyclServiceView)中所做的操作
此方法的作用
mAdapter.setmListOfPhotos()
?@PratikButani它将我的数组设置为我的适配器,即我的回收器视图需要的数组。我感觉我的回收器视图首先滚动到最后一个元素,然后向数组添加新元素。这样,它就不会真正进入最后一个元素。应该是相反的。
@Override
public void onImageSaved(@NonNull File file) {
    mListOfPhotos.add(file.getAbsolutePath());

    mAdapter.setmListOfPhotos(mListOfPhotos);

    mRecyclerView.setAdapter(mAdapter);

    mRecyclerView.smoothScrollToPosition(mListOfPhotos.size());

    //mAdapter.notifyDataSetChanged();
}