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