0

RecyclerViewアダプタから別のアクティビティに画像を渡したい。 これは私のアダプタです:recyclerviewアダプタから別のアクティビティに画像を渡す方法

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> { 
    private Context context; 
    private ArrayList<Deatails> android; 


    public DataAdapter(Context context,ArrayList<Deatails> android) { 
     this.context = context; 
     this.android = android; 
    } 

    @Override 
    public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false); 
     return new ViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, final int i) { 

     viewHolder.tv_name.setText(android.get(i).getName()); 
     viewHolder.tv_version.setText(android.get(i).getVer()); 
     viewHolder.tv_api_level.setText(android.get(i).getApi()); 

     Picasso.with(context).load("http://memaraneha.ir/Erfan/images/"+android.get(i).getPic()).resize(500,500) 
       .into(viewHolder.tv_image); 

    } 

    @Override 
    public int getItemCount() { 
     return android.size(); 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder{ 
     private TextView tv_name,tv_version,tv_api_level; 
     private ImageView tv_image; 


     public ViewHolder(final View view) { 
      super(view); 

      tv_name = (TextView)view.findViewById(R.id.tv_name); 
      tv_version = (TextView)view.findViewById(R.id.tv_version); 
      tv_api_level = (TextView)view.findViewById(R.id.tv_api_level); 
      tv_image= (ImageView) view.findViewById(R.id.img); 

      view.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Bundle b = new Bundle(); 
        Intent intent=new Intent(view.getContext(),Main2Activity.class); 
        String passingdata = tv_name.getText().toString(); 
        b.putString("Key", passingdata); 
        intent.putExtras(b); 
        view.getContext().startActivity(intent); 



       } 
      }); 
     } 
    } 
} 

これは私の別のアクティビティです:

public class Main2Activity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main2); 

     Bundle b = getIntent().getExtras(); 
     String receivingdata = b.getString("Key"); 
     TextView textView=(TextView)findViewById(R.id.tv_title); 
     textView.setText(receivingdata); 

    } 
} 

ので、私はview.setOnClickListener(new View.OnClickListener() {セクション

view.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Bundle b = new Bundle(); 
        Intent intent=new Intent(view.getContext(),Main2Activity.class); 
        String passingdata = tv_name.getText().toString(); 
        b.putString("Key", passingdata); 
        intent.putExtras(b); 
        view.getContext().startActivity(intent); 
       } 
      }); 

内のテキストを渡すと、このセクション

で別のアクティビティにそれをrecive
Bundle b = getIntent().getExtras(); 
     String receivingdata = b.getString("Key"); 
     TextView textView=(TextView)findViewById(R.id.tv_title); 
     textView.setText(receivingdata); 

私は画像を渡すのと同じことをするが、仕事をしないために多くのことを試みます。 this linkは私の問題を重複しているようですが、私の場合はいくつかの違いがあり、混乱しています。いずれかが助けてくれる場合

+0

どのようなエラーが発生していますか? – Meenal

+0

@BIWそのクリア! onBindViewHolder with picasso library look – erfan

答えて

4

イメージをインテントで直接渡さないでください。イメージをローカルに保存しようとするか(URLイメージの場合はWebからイメージをロードするライブラリを使用し、キャッシュを実装する)、このイメージにURIのみをアクティビティに渡します。その後、渡されたURIからイメージを読み込みます。

+0

あなたがコードを提案していないと私に答えてください。投票が必要な場合 – erfan

+0

@erfanあなたはパス画像の意味ですか?多くのコードを投稿しますが、主なアイデアは示しません。とにかく、url(イメージがサーバーに格納されている場合)またはリソースID(drawableリソースの場合)を渡す必要があります。それから、データを通常どおりに渡してください。しかし、あなたのコードとして、なぜ文字列渡し= tv_name.getText()。toString();? tv_nameはあなたのイメージのURLですか? –

+0

@LạngHoàngいいえ、それは私のテキストと私はこれを渡して、どのように伝えた。これは私のイメージURLです:Picasso.with(context).load( "http://memaraneha.ir/Erfan/images/" android.get(i).getPic())。resize(500,500) .into viewHolder.tv_image); – erfan

関連する問題