Java 如何在Asynctask中存在的onItemclicked方法中获取位图,以便将位图包传递给另一个活动?
上面是MyAdapter方法。我想将位图的值传递给另一个活动,以便将RecyclerView列表中的OnItemClick图像显示到另一个活动中。我的另一个问题是,我是否需要将MainActivity的class方法中的intent内容传递给Java 如何在Asynctask中存在的onItemclicked方法中获取位图,以便将位图包传递给另一个活动?,java,android,bitmap,android-asynctask,Java,Android,Bitmap,Android Asynctask,上面是MyAdapter方法。我想将位图的值传递给另一个活动,以便将RecyclerView列表中的OnItemClick图像显示到另一个活动中。我的另一个问题是,我是否需要将MainActivity的class方法中的intent内容传递给 @Override protected Bitmap doInBackground(String... imageurl) { try { URL url = new URL(
@Override
protected Bitmap doInBackground(String... imageurl)
{
try {
URL url = new URL(imageurl[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
InputStream in = urlConnection.getInputStream();
bitmap = BitmapFactory.decodeStream(in);
return bitmap;
}catch (Exception e)
{
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
if(result!=null && imageReference!=null) {
ImageView imgview = (ImageView) imageReference.get();
if (imgview != null) {
imgview.setImageBitmap(bitmap);
}
}
}
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
ItemData current=data.get(position);
try {
Mytask mytask=new Mytask(holder.getImageview());
mytask.execute(current.imageUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
public void setClickListener(ClickListener clickListener)
{
this.clickListener=clickListener;
Bundle extras=new Bundle();
extras.putParcelable("image",bitmap);
}
@Override
public int getItemCount() {
return data.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView icon;
public MyViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
icon=(ImageView)itemView.findViewById(R.id.item_icon);
}
public ImageView getImageview()
{
return icon;
}
public void onClick(View view)
{
if(clickListener!=null)
{
clickListener.itemClicked(view,getAdapterPosition());
}
}
}
public interface ClickListener{
public void itemClicked(View view,int position);
}
所以。意图的东西。或者别的什么地方。请提供帮助。
位图
实现了包裹
,因此您可以始终按照以下意图传递它:
@override
Public void itemClickedmethod(View view,int position) {
Bundle extras=new bundle();
并在另一端检索它:
Intent-Intent=getIntent()代码>
位图位图=(位图)intent.getParcelableExtra(“位图图像”)代码>
摘自给出的答案
编辑1
Bitmap位图=((BitmapDrawable)image.getDrawable()).getBitmap()代码>
使用该选项可将位图附加到ImageView。(image
是图像视图)尝试使用此代码此代码正在工作:-
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
//然后
imageUrl = "nameofimagefile or path of image at server side"
new LoadImage().execute(imageUrl);
私有类LoadImage扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//pDialog=newprogressdialog(getActivity());
//pDialog.setMessage(“正在加载图像…”);
//pDialog.show();
}
受保护位图doInBackground(字符串…参数){
试一试{
位图=BitmapFactory.decodeStream((InputStream)新URL(
args[0]).getContent();
System.out.println(“==========”+位图);
}捕获(例外e){
e、 printStackTrace();
}
返回位图;
}
受保护的void onPostExecute(位图图像){
如果(图像!=null){
imgCompLogo.setImageBitmap(图像);
//pDialog.disclose();
}否则{
//pDialog.disclose();
}
}
}
要传递视图中的位图吗?
我在doInBackground方法的异步任务中有位图。当我在ReyclView中单击图像时,它应该转到下一个活动并显示图像。但我需要将位图传递到右侧,以便在下一个活动中显示图像。如何获取位图,以便通过Intent传递。我从MainActivity类获取URL。我能够在回收者列表视图中显示100幅图像。现在,当我单击一个特定的图像时,它将在下一个活动中打开。但我不知道如何从MyAdapter类中获取位图,该类位于Async task->doInBackground方法中。所以当我打算做另一件事的时候。我必须在另一个活动中接收该位图,以便将位图设置为“进入图像视图”。这样我就可以在下一个活动中显示该图像。@说如果您需要在ArrayList中获取该数据并在列表中设置该数据,则创建一个适配器类,然后获取列表适配器的位置以获取特定图像。……我的代码将显示服务器上的图像,然后您可以在图像视图中显示该图像。。。。。你必须在编码管理中管理你的数据……这没关系,但是,我从MainActivity类获取URL。我能够在回收者列表视图中显示100幅图像。现在,当我单击一个特定的图像时,它将在下一个活动中打开。但我不知道如何从MyAdapter类中获取位图,该类位于Async task->doInBackground方法中。所以当我打算做另一件事的时候。我必须在另一个活动中接收该位图,以便将位图设置为“进入图像视图”。这样我就可以在下一个活动中显示图像了。@SayyafBitmap Bitmap=((BitmapDrawable)image.getDrawable()).getBitmap()代码>使用它将位图附加到ImageView在执行intent时,我们通常会传递数据包之类的东西,对吗?现在既然我要传递一个图像,我会问我是否要把位图放在原图中?因为我是编程新手,所以我在使用meBitmap bitmap=((BitmapDrawable)image.getDrawable()).getBitmap()编程时会遇到一些问题;我会在第二节活动课上用这个,对吗?我的问题是我是否需要在intent中传递位图?是的,您还可以传递intent中可包裹的对象和位图id可包裹的对象
private class LoadImage extends AsyncTask<String, String, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//pDialog = new ProgressDialog(getActivity());
//pDialog.setMessage("Loading Image ....");
//pDialog.show();
}
protected Bitmap doInBackground(String... args) {
try {
bitmap = BitmapFactory.decodeStream((InputStream) new URL(
args[0]).getContent());
System.out.println("======" + bitmap);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
protected void onPostExecute(Bitmap image) {
if (image != null) {
imgCompLogo.setImageBitmap(image);
//pDialog.dismiss();
} else {
//pDialog.dismiss();
}
}
}