我已经填充了一个ListView,其中每一行中的一个项是一个NetworkImageView。现在,我将每一行按意图putExtra()传递给一个detail_product活动。
对于TextViews,我一直在做:
String pName = ((TextView) view.findViewById(R.id.name)).getText().toString();
...
i.putExtra(TAG_NAME, pName);如何继续进行NetworkImageView?我不能用getText或getResources()。
编辑
@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());
}发布于 2015-05-11 22:13:33
没有为NetworkImageView提供URL设置的getter可用。
一种方法是为您的NetworkImageView使用标记。您可以将您的图像URL设置为NetworkImageView.For的标记。holder.thumbNail.setTag(imgUrl)在您的getView(.)ListView的适配器。
在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();
}https://stackoverflow.com/questions/30176097
复制相似问题