2016-09-05 20 views
0

どのようにピカソで読み込まれた画像のURLを取得し、それをRecyclerviewアダプターの別のアクティビティーに渡すことができますか? 。ピカソで読み込まれた画像からURLを取得

誰も私は私に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を渡すので、読み込むものを知ることができます。そのURLを他のものに渡したい場合は、そのURLをモデルデータの一部とするなど、自分で追跡する必要があります。 – CommonsWare

答えて

1

に感謝...ピカソからURLを取得するための任意のものを見つけるのdidnt Picassoライブラリを自分で修正することなくそれを行います。幸いにも、一般的に使用され、回避策を実装するのが容易です。クリック可能な要素にアイテムのID /位置をタグ付けするだけです。例えば(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

私はたまにアイテムをタグとして入れます。たとえば、アクティビティがonClickを処理していて、アイテムを取得するためにアダプタにアクセスしたくない場合に便利です。 – lionscribe

関連する問題