所以我想要这个类,它从画廊中选择图像并将数据保存在URI中,以将其传递给我的imageadapter.class,然后将其显示在Gridview上。我该怎么做?
谢谢,代码:
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.addimage:
Toast.makeText(getApplicationContext(), "Image added", Toast.LENGTH_SHORT).show();
openGallery();
break;
case R.id.loggout:
Toast.makeText(getApplicationContext(), "logged out", Toast.LENGTH_SHORT).show();
Intent i = new Intent(nav.this, MainActivity.class);
startActivity(i);
}
return super.onOptionsItemSelected(item);
}
private void openGallery(){
Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, IMAGE_PICK);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == IMAGE_PICK){
imageuri = data.getData();
System.out.println("success");
}
}
和适配器的图像数组:
public static Integer[] images ={
R.drawable.test, R.drawable.test2, R.drawable.test3, R.drawable.test4, R.drawable.test5, R.drawable.test6, R.drawable.test7, R.drawable.test8
};
如果您要发送结果,可以在成功检索数据后执行类似的操作,
if(resultCode == RESULT_OK && requestCode == IMAGE_PICK){
Uri imageuri = data.getData();
processImageData(imageuri);
System.out.println("success");
}
在您的适配器上创建setter方法,如
public void setImages(Integer[] images){
this.images = images;
notifyDataSetChanged();
}
并且在onActivityResult()
方法中,但是您通过创建图像数组来处理uri并调用适配器变量+ setter的方法
if(resultCode == RESULT_OK && requestCode == IMAGE_PICK){
//handling and create array list of uri
Integer[] imagesArrayResult = {//......//}
imageadapter.setImages(imagesArrayResult);
}