2014-10-05 67 views
0

我有一个问题。我有一个从Web与JSOn(工作正常)的文本和图像的列表视图,当我点击,我想要与一些TextViews的DetailActivity和ImageView from List.I可以将ListView中的所有Textview传递给DetailActivity,但不传递ImageView。我试图通过putextras和model传递位图,但没有任何内容。如何解决这个问题?我可以从缓存直接调用位图到DetailActivity?从Listview传递图像到一个细节活动

回答

0

您是否将图像保存在本地存储中?在这种情况下,最好发送保存文件的Uri而不是原始位图。

+0

当我下载的图像我将它与Lru cache一起存储。我可以如何找到uri? – gas 2014-10-05 14:31:52

+0

你有没有对File对象的引用?如果是的话,你可以使用Uri uri = Uri.fromFile(your_file_object)); – 2014-10-05 14:35:52

0

通过意图传递大量数据并不总是行得通。虽然没有记录,但这往往失败。见

等等。

一个很好的解决方法是(a)将位图保存到文件中(b)通过意图将文件名传递给详细信息活动。(c)在详细信息活动中重新创建位图。

+0

如果我理解正确,你的意思是再次从Web调用我的详细活动中的图像? – gas 2014-10-05 14:33:39

+0

您不必从网上进行第二次下载。第一次下载后,您将获得Bitmap,然后将其保存到设备上的本地文件中。这是本地文件的路径,您将发送到下一个活动。然后第二个活动将从该文件创建位图。因此不需要第二次网络下载。 – EJK 2014-10-05 14:39:24

1

您可以使用ImageLoader

Intent i = getIntent(); 
    // Get the result of flag 
    flag = i.getStringExtra("flag"); // image 

    // Locate the TextViews and images in singleitemview.xml 
    ImageView imgflag = (ImageView) findViewById(R.id.flag); 
    imageLoader.DisplayImage(flag, imgflag); // use lazylist image loader 

你可以看到这个example。希望这可以帮助。

0

传递,我发现复杂对象的最简单方法是使用EventBus:https://github.com/greenrobot/EventBus

使用EventBus,您就不必序列以任何方式数据,它们是由直接用于其他活动/片段和普通班甚至。

我回答这个问题,有一些关于这个问题的解释:Saving information from one fragment and dialog if the user navigates to another fragment

这篇文章也有是多么简单的加上一些漂亮的小例子一些比较其他方法:http://www.stevenmarkford.com/passing-objects-between-android-activities/

+0

我正在使用pojo,但我无法通过位图我创建了一个错误的循环。有关eventBus?我应该改变我的项目使用它吗?我不知道它是如何工作的 – gas 2014-10-05 15:14:46

+0

尝试看看最后一个链接的例子3,它是痛苦地简单:)不认为你将不得不改变任何以前的代码将其添加到项目。 – cYrixmorten 2014-10-05 15:59:13

+0

是的,我看到了。所以我只是导入jar文件? – gas 2014-10-05 17:03:49

相关问题