gpt4 book ai didi

java - Gridview 的 URI 列表

转载 作者:行者123 更新时间:2023-12-02 11:01:53 25 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序从图库中选择图像列表,并应在发送到服务器之前显示图像,该服务器已经使用改造运行。

此选择返回 List<URI> 中的列表,就像下面的代码一样:

Button uploadBtn = findViewById(R.id.btn_button);
uploadBtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE,true);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Escolha a imagem"),PICK_IMAGE);
}

});

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null){

ClipData clipData = data.getClipData();
ArrayList<Uri> fileUris = new ArrayList<>();

if (clipData == null){
Uri uri = data.getData();
fileUris.add(uri);
} else {
for (int i = 0; i < clipData.getItemCount(); i++) {
ClipData.Item item = clipData.getItemAt(i);
Uri uri = item.getUri();
fileUris.add(uri);
}
}
uploadAlbum(fileUris);
}

我想知道是否可以使用此列表来填充 GridView 以及如何做到这一点。

提前致谢

最佳答案

我找到了一个解决方案,就是使用以下代码将 URI 解析为 BITMAP:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null){

ClipData clipData = data.getClipData();
fileUris = new ArrayList<>();
images = new ArrayList<>();

for (int i = 0; i < clipData.getItemCount(); i++) {
ClipData.Item item = clipData.getItemAt(i);
Uri uri = item.getUri();
fileUris.add(uri);
try {
images.add(MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri));
gridView.setVisibility(View.VISIBLE);
gridView.setAdapter(new ImageAdapter(this, images));

} catch (IOException e) {
e.printStackTrace();
}
}
}
}

我的自定义 GridviewAdapter:

public class ImageAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<Bitmap> imagens;

// Constructor
public ImageAdapter(Context c, ArrayList<Bitmap> images) {
mContext = c;
this.imagens = images;
}

public int getCount() {
return imagens.size();
}

public Object getItem(int position) {
return null;
}

public long getItemId(int position) {
return 0;
}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;

if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
}
else
{
imageView = (ImageView) convertView;
}
imageView.setImageBitmap(images.get(position));
return imageView;
}


}

关于java - Gridview 的 URI 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51272723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com