在我的应用程序中,我有两个活动
1。记录活动性
2。网格视图活动
在RecorderActivity中,工具栏中有一个名为
选择图像
当此选项单击时,将打开GridViewActivity。
在gridviewactivity中,我在工具栏中有两个选项,称为“从相机捕获图像”和“从库中选择图像”。
从库中选择图像时,它将显示在GridViewActivity中的RecyclerView中,如下所示
之后,我将这个arraylist保存为sharedpreferences。
这是密码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
int count=0;
if(requestCode==PICK_IMAGE_MULTIPLE && resultCode==RESULT_OK) {
String[] filePath = {MediaStore.Images.Media.DATA};
if (data.getData() != null) {
//if single image is selected
Uri imageUri = data.getData();
Cursor cursor = getContentResolver().query(imageUri, filePath, null, null, null);
cursor.moveToFirst();
arrayList.add(new Images(imageUri.toString()));
cursor.close();
} else {
if (data.getClipData() != null) {
ClipData mClipData = data.getClipData();
for (int i = 0; i < mClipData.getItemCount(); i++) {
ClipData.Item item = mClipData.getItemAt(i);
Uri uri = item.getUri();
// Get the cursor
Cursor cursor = getContentResolver().query(uri, filePath, null, null, null);
// Move to first row
cursor.moveToFirst();
arrayList.add(new Images(uri.toString()));
count++;
cursor.close();
}
}
}
imagesAdapter=new ImagesAdapter(context,arrayList);
sharedPref.save(arrayList); //store arraylist in SharedPref
sharedPref.updateCount(count); //store images count in SharedPref
Log.d("ROHIT","data saved");
setRecyclerView();
}
}
在那之后,当我按了一次又一次的时候,当我在RecorderActivity中单击了SelectImageoption时,GridViewActivity再次打开,但现在RecyclerView卡只是一片空白,图像并没有显示在其中。
这是我在oncreate()中从sharedpref获取arraylist的代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid_view);
recyclerView=findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
autoFitGridLayoutManager=new AutoFitGridLayoutManager(context,250);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setLayoutManager(autoFitGridLayoutManager);
arrayList=new ArrayList<>();
sharedPref=new SharedPref(context);
if (sharedPref.getCount()==0) {
Toast.makeText(context, "No images...", Toast.LENGTH_SHORT).show();
}
else {
Gson gson=new Gson();
String response=sharedPref.getImages();
arrayList=gson.fromJson(response,new TypeToken>(){}.getType()); //gettign ArrayList back from SharedPref
Log.d("ROHIT", String.valueOf(sharedPref.getCount()));
Log.d("ROHIT", String.valueOf(arrayList.size())); //arraylist size is also correct after getting it from SharedPref
imagesAdapter=new ImagesAdapter(context,arrayList);
setRecyclerView();
}
}
public void setRecyclerView() {
ItemTouchHelper.Callback callback=new ItemMoveCallback(imagesAdapter);
ItemTouchHelper touchHelper=new ItemTouchHelper(callback);
touchHelper.attachToRecyclerView(recyclerView);
recyclerView.setAdapter(imagesAdapter);
}
之后,当我再次从Gallery中选择同一个图像时,它将在RecyclerView中显示上一个图像和新选择的图像。
请告诉我我的代码有什么问题
或者告诉我是否有其他方法可以达到我想要的目的。