2016-09-05 5 views
0

как я могу получить url загруженных imgae с picasso и передать его другой активности в адаптере Recycliewiew ???? .получить url из загруженного изображения с picasso

я не нашли какой-либо вещь для получения URL от Picasso, так что если кто-нибудь может мне помочь, пожалуйста, скажите мне Metod или код для этого действия на этом посту ... спасибо

package com.roa.nox.store.adapters; 


import android.annotation.SuppressLint; 
import android.annotation.TargetApi; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.drawable.Drawable; 
import android.os.Build; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.PopupMenu; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import android.widget.Toast; 
import com.roa.nox.store.ApActivity; 
import com.roa.nox.store.ItemObjectC; 
import com.roa.nox.store.R; 
import com.roa.nox.store.models.SingleItemModel; 
import com.squareup.picasso.Picasso; 
import java.util.ArrayList; 
import java.util.Locale; 
import me.drakeet.materialdialog.MaterialDialog; 

public class SectionListDataAdapter extends RecyclerView.Adapter<SectionListDataAdapter.SingleItemRowHolder> { 

    private ArrayList<SingleItemModel> itemsList; 
    private Context mContext; 
    private boolean isLang; 


    public SectionListDataAdapter(Context context, ArrayList<SingleItemModel> itemsList) { 
     this.itemsList = itemsList; 

     this.mContext = context; 
    } 

    @Override 
    public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_single_card, null); 
     SingleItemRowHolder mh = new SingleItemRowHolder(v); 

     return mh; 
    } 

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 
    @Override 
    public void onBindViewHolder(SingleItemRowHolder holder, int i) { 

     SingleItemModel singleItem = itemsList.get(i); 
     final int p= singleItem.getPrice(); 
     if(p==0) 
     { 
      if (isLang = Locale.getDefault().getLanguage().equals("fa")) { 
       holder.price.setText("رایگان"); 
      } else { 
       holder.price.setText("Free"); 
      } 
     } 
     else 
     { 

      holder.price.setText(String.valueOf(p)); 
     } 
     double rate=singleItem.getRate(); 
     String srate= String.valueOf(rate); 
     holder.tvTitle.setText(singleItem.getName()); 
     holder.dvt.setText(singleItem.getdv()); 
     holder.cat.setText(singleItem.getcat()); 
     holder.url.setText(singleItem.getUrl()); 
     holder.icon.setText(singleItem.geticon()); 
     Picasso.with(mContext).load(singleItem.geticon()).placeholder(R.drawable.load).error(R.drawable.error).into(holder.itemImage); 
     holder.cont.setText(singleItem.getContent()); 


     holder.rte.setText(srate); 


     /* Glide.with(mContext) 
       .load(feedItem.getImageURL()) 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .centerCrop() 
       .error(R.drawable.bg) 
       .into(feedListRowHolder.thumbView);*/ 
    } 

    @Override 
    public int getItemCount() { 
     return (null != itemsList ? itemsList.size() : 0); 
    } 

    public class SingleItemRowHolder extends RecyclerView.ViewHolder { 

     protected ImageButton btaction; 
     protected TextView rte; 
     protected TextView cat; 
     protected TextView price; 
     protected TextView tvTitle; 
     protected TextView dvt; 
     protected TextView url; 
     protected TextView icon; 
     protected TextView cont; 
     protected ImageView itemImage; 
     private Context context; 

     private int p; 

     public SingleItemRowHolder(View view) { 
      super(view); 

      this.tvTitle = (TextView) view.findViewById(R.id.tvTitle); 
      this.dvt = (TextView) view.findViewById(R.id.tdv); 
      this.price = (TextView) view.findViewById(R.id.price); 
      this.url = (TextView) view.findViewById(R.id.url); 
      this.cont = (TextView) view.findViewById(R.id.content); 
      this.itemImage = (ImageView) view.findViewById(R.id.itemImage); 
      this.btaction = (ImageButton) view.findViewById(R.id.action); 
      this.rte = (TextView) view.findViewById(R.id.raten); 
      this.cat = (TextView) view.findViewById(R.id.cat); 
      this.icon = (TextView) view.findViewById(R.id.icon); 





      view.setOnClickListener(new View.OnClickListener() { 


       public ItemObjectC parseImageFile; 
       public String iconi; 

       @Override 
       public void onClick(View v) { 

        final String URL = url.getText().toString(); 

        final int pos = getAdapterPosition(); 
        Intent intent = new Intent(mContext, ApActivity.class); 
        intent.putExtra("name", tvTitle.getText().toString()); 
        intent.putExtra("price", price.getText().toString()); 
        intent.putExtra("content", cont.getText().toString()); 
        intent.putExtra("dev", dvt.getText().toString()); 
        intent.putExtra("cat", cat.getText().toString()); 
        intent.putExtra("icon", What i should to add for get url???); 
        intent.putExtra("rate", rte.getText().toString()); 
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
        mContext.startActivity(intent); 


       } 
      }); 


      btaction.setOnClickListener(new View.OnClickListener() { 
       @SuppressLint("NewApi") 
       @Override 
       public void onClick(View v) { 
        PopupMenu popup = new PopupMenu(mContext, v); 
        popup.getMenuInflater().inflate(R.menu.popup, 
          popup.getMenu()); 
        popup.show(); 
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
         @Override 
         public boolean onMenuItemClick(MenuItem item) { 

          switch (item.getItemId()) { 
           case R.id.install: 



            break; 
           case R.id.addtowishlist: 


            break; 

           default: 
            break; 
          } 

          return true; 
         } 
        }); 

       } 
      }); 




     } 

    }} 
+1

Вы не получите URL с Пикассо. Вы указываете URL-адрес Picasso, поэтому он знает, что загрузить. Если вы хотите передать этот URL-адрес другому, вам необходимо самостоятельно отслеживать URL-адрес, например, чтобы он был частью ваших данных модели. – CommonsWare

ответ

1

Вы не можете сделайте это без изменения библиотеки Picasso самостоятельно. К счастью, обычно используется и легко реализуется обход. Просто пометьте свой элемент clickable своим идентификатором/позицией вашего элемента. Например (если holder.itemImage кликабельна), в onBindViewHolder():

holder.itemImage.setTag(position); 

Тогда, в OnClick() или где бы вы ни обрабатывать щелчки:

int position = (int) v.getTag(); 
String iconUrl = adapter.itemsList.get(position).geticon(); // make itemsList public or provide getter first 
+0

Если вы действительно хотите, вы можете поместить фактический URL в тег. – lionscribe

+0

Несомненно, но я думаю, что удобно иметь доступ ко всему предмету. –

+0

Я иногда помещаю весь элемент в качестве тега. Это полезно, когда, например, Activity обрабатывает onClick, и вы хотите избежать доступа к адаптеру для получения элемента. – lionscribe

Смежные вопросы