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); 
       } 
      }); 

и Получать, что в другой деятельности в этом разделе

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 с библиотекой picasso посмотреть – erfan

ответ

4

Не передавайте изображения напрямую. Попробуйте сохранить изображение локально (или использовать некоторую библиотеку для загрузки изображений из Интернета, если это URL-образ, они реализуют кеш) и передать только URI этому изображению для активности. Затем прочитайте изображение из пройденного URI.

+0

ответьте мне с кодом, если не хотите, хотите ли вы голосовать – erfan

+0

@erfan, что вы подразумеваете под обратным изображением? u размещайте много кода, но не показываете основную идею. Во всяком случае, вы должны передать URL-адрес (если ваше изображение хранится на сервере) или идентификатор ресурса (если это ресурс с возможностью рисования). Затем просто передайте данные как обычно. Но как ваш код, почему String passdata = 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