2015-05-11 112 views
2

我有一個ListView填充其中每一行中的項目之一是一個NetworkImageView。現在我通過Intent putExtra()將每行傳遞給一個detail_product活動。從NetworkImageView獲取網址

隨着TextViews我是這樣做的:

String pName = ((TextView) view.findViewById(R.id.name)).getText().toString(); 
... 
i.putExtra(TAG_NAME, pName); 

如何使用NetworkImageView繼續嗎?我不能使用getTextgetResources()

編輯

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (inflater == null) 
     inflater = (LayoutInflater) activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) 
     convertView = inflater.inflate(R.layout.list_row, null); 

    if (imageLoader == null) 
     imageLoader = AppController.getInstance().getImageLoader(); 
    NetworkImageView thumbNail = (NetworkImageView) convertView 
      .findViewById(R.id.thumbnail); 

    TextView name = (TextView) convertView.findViewById(R.id.name); 


    Product m = productItems.get(position); 

    // thumbnail image 
    String url = m.getThumbnailUrl(); 
    thumbNail.setImageUrl(url, imageLoader); 
    thumbNail.setTag(url); 

    // name 
    name.setText(m.getName()); 



} 

回答

1

沒有可用的NetworkImageView吸氣,爲您提供網址設爲它。

一種方法是爲您的NetworkImageView使用標籤。您可以將您的圖像URL設置爲NetworkImageView的標記。例如。 holder.thumbNail.setTag(imgUrl)在適配器ListView的getView(...)中。

在你onItemClick偵聽的ListView

listView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     NetworkImageView v = (NetworkImageView) view.findViewById(R.id.thumbnail); 
     String imgUrl = (String) v.getTag(); 

另一種方式可能是通過反射[請儘量避免,因爲你可以看到我稱之爲「mUrl」,裏面NetworkImageView使用的私有變量,很可能在改變任何時間點]

Class nw = NetworkImageView.class; 
    try { 
     Field url=nw.getDeclaredField("mUrl"); 
     url.setAccessible(true); 
     String imgUrl=(String) url.get(your_networkview_object); 
    } catch (NoSuchFieldException | IllegalAccessException | IllegalArgumentException e) { 
     e.printStackTrace(); 
    } 
+0

我應該改變我的setImageUrl嗎?代碼:「thumbNail.setImageUrl(m.getThumbnailUrl(),imageLoader);」其中「m」來自「Product m = productItems.get(position); –

+0

不,您需要將請求圖像URL綁定到您的NetworkImageView上 String url = m.getThumbnailUrl(); holder.thumbNail.setImageUrl(url,imageLoader); holder.thumbNail.setTag(url); – Mithun

+0

請看看EDIT來告訴我代碼是否正確 –