英文:
How to import image from gallery in android studio
问题
在这段代码中,stickerList
中有两个图片,这些图片来自于可绘制资源,并且可以完美地设置到我的 ImageView
中。现在我想要从相册中选择图片(而不是特定的硬编码可绘制资源),并设置任意我想要的图片。来自相册的新图片将会覆盖先前或主要的图片。我应该如何实现这个功能?
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
public class StickerAdapter extends RecyclerView.Adapter<StickerAdapter.ViewHolder> {
// 这里是之前的硬编码图片资源
int[] stickerList = new int[]{R.drawable.aa, R.drawable.bb};
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_sticker, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.imgSticker.setImageResource(stickerList[position]);
}
@Override
public int getItemCount() {
return stickerList.length;
}
class ViewHolder extends RecyclerView.ViewHolder {
ImageView imgSticker;
ViewHolder(View itemView) {
super(itemView);
imgSticker = itemView.findViewById(R.id.imgSticker);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mStickerListener != null) {
// 在这里你可以获取相册中选取的图片并设置到 ImageView 中
// 使用 mStickerListener.onStickerClick 方法来传递图片
// 然后更新 stickerList 或其他需要的数据
}
dismiss();
}
});
}
}
}
请注意,上述代码中的注释部分是关于如何实现从相册中选取图片并设置到 ImageView
的示意。你需要使用相应的方法来获取相册中的图片,然后更新适配器中的数据。
英文:
In this code, there are two images in stickerList
, which come from drawable resources and can be set into my ImageView
perfectly. Now I want to pick images from the gallery (rather than specific hardcoded drawables) and set any image I want. A new image from gallery which will override the previous or main one. How can i do that?
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
public class StickerAdapter extends RecyclerView.Adapter<StickerAdapter.ViewHolder> {
int[] stickerList = new int[]{R.drawable.aa, R.drawable.bb};
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_sticker, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.imgSticker.setImageResource(stickerList[position]);
}
@Override
public int getItemCount() {
return stickerList.length;
}
class ViewHolder extends RecyclerView.ViewHolder {
ImageView imgSticker;
ViewHolder(View itemView) {
super(itemView);
imgSticker = itemView.findViewById(R.id.imgSticker);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mStickerListener != null) {
mStickerListener.onStickerClick(
BitmapFactory.decodeResource(getResources(),
stickerList[getLayoutPosition()]));
}
dismiss();
}
});
}
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论