Java 如何在Asynctask中存在的onItemclicked方法中获取位图,以便将位图包传递给另一个活动?

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(

上面是MyAdapter方法。我想将位图的值传递给另一个活动,以便将RecyclerView列表中的OnItemClick图像显示到另一个活动中。我的另一个问题是,我是否需要将MainActivity的class方法中的intent内容传递给

    @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方法中。所以当我打算做另一件事的时候。我必须在另一个活动中接收该位图,以便将位图设置为“进入图像视图”。这样我就可以在下一个活动中显示图像了。@Sayyaf
Bitmap 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();

        }
    }
}