2015-09-06 108 views
0

我创造了2个XML文件的XML文件:获得一个随机的项目从

RES/XML/comedy.xml

<comedy> 
<item title="Grown Ups" length="90min"/> 
<item title="Grown Ups 2" length="90min"/> 
<item title="Scary Movie" length="90min"/> 
<item title="Superbad" length="90min"/> 
<item title="Zoolander" length="90min"/> 
<item title="Groundhog Day" length="90min"/> 
<item title="Beverly Hills Cop" length="90min"/> 
<item title="Beverly Hills Cop II" length="90min"/> 
<item title="Hangover" length="90min"/> 
<item title="Anchorman" length="90min"/> 
<item title="Pineapple Express" length="90min"/> 
<item title="Happy Gilmore" length="90min"/> 
<item title="We're the Millers" length="90min"/> 
<item title="Horrible Bosses" length="90min"/> 
<item title="Horrible Bosses 2" length="90min"/> 
<item title="Meet the Parents" length="90min"/> 

RES/XML/action.xml

<action> 
<item title="Man in Black" length="90min"/> 
<item title="Man in Black II" length="90min"/> 
<item title="Man in Black III" length="90min"/> 
<item title="Mission: Impossible" length="90min"/> 
<item title="Mission: Impossible II" length="90min"/> 
<item title="Mission: Impossible - The Phantom Pain" length="90min"/> 
<item title="Terminator" length="90min"/> 
<item title="Die Hard" length="90min"/> 
<item title="Back to the Future" length="90min"/> 
<item title="The Bourne Identity" length="90min"/> 
<item title="Marvel's The Avengers" length="90min"/> 
<item title="Jurassic Park" length="90min"/> 
<item title="Jurassic World" length="90min"/> 
<item title="The Dark Night" length="90min"/> 
<item title="The Matrix" length="90min"/> 
<item title="Kill Bill - Volume 2" length="90min"/> 
<item title="Apocalypto" length="90min"/> 
<item title="Apocalypse Now" length="90min"/> 
<item title="Aliens" length="90min"/> 

现在我想从这些文件中抽出一部随机电影。

有没有办法直接做到这一点?或者我必须用XmlPullParser(如here)拉出所有项目,然后使用随机生成器?

旁注

1:我不能完全肯定,如果我做了那些xml文件的方式是理想的。我只是将自己定位于链接中的示例。如果你有更好的想法,请告诉我。

2:最终目标是在用户选择一个或多个流派之后在应用中显示随机电影。

+0

您将需要加载xml文件作为某种数组,并且只是从中得到一个随机索引 –

+0

感谢Daniel。 这是我的计划B. 但后来在制作应用程序的过程中,我想抽出随机电影,不仅按流派过滤,还要按照长度过滤。 当我使用数组,像[这里](http://stackoverflow.com/questions/11600001/how-to-get-a-random-value-from-a-string-array-in-android)我可以不这样做。或者我可以吗? – Johannes

+0

如果我是你,我会使用JSON。想看到吗? – theapache64

回答

0

你可以使用sqlite DataBse,所以你可以做任何事情。例如保存名称和类型,然后查询某事像这样: SELECT * FROM movieWHERE movie.genre =“戏剧” ORDERBY RANDOM()

+0

我知道如何创建一个带有数据的sqlite数据库的唯一方法,就是已经给出(如这里,电影列表) xml文件。 – Johannes

+0

本教程可以用于sqlite数据库:(http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/) – Dara

0

我通过与字符串数组的XML文件选择了另溃败:

<resources> 
    <string-array name="comedy"> 
    <item>Grown Ups</item> 
    <item>Grown Ups 2</item> 
    <item>Scary Movie</item> 
    <item>Superbad</item> 
    <item>Zoolander</item> 
    <item>Groundhog Day</item> 
    <item>Beverly Hills Cop</item> 
    <item>Beverly Hills Cop II</item> 
    <item>Hangover</item> 
    <item>Anchorman</item> 
    <item>Pineapple Express</item> 
    <item>Happy Gilmore</item> 
    <item>We are the Millers</item> 
    <item>Horrible Bosses</item> 
    <item>Horrible Bosses 2</item> 
    <item>Meet the Parents</item> 
    </string-array> 

    <string-array name="action"> 
    <item>Man in Black</item> 
    <item>Man in Black II</item> 
    <item>Man in Black III</item> 
    <item>Terminator</item> 
    <item>Die Hard</item> 
    <item>Back to the Future</item> 
    <item>The Bourne Identity</item> 
    <item>The Avengers</item> 
    <item>Jurassic Park</item> 
    <item>Jurassic World</item> 
    <item>The Dark Night</item> 
    <item>The Matrix</item> 
    <item>Mission: Impossible</item> 
    <item>Mission: Impossible II</item> 
    <item>Mission: Impossible - The Phantom Pain</item> 
    <item>Kill Bill - Volume 2</item> 
    <item>Apocalypto</item> 
    <item>Aliens</item> 
    <item>Apocalypse Now</item> 
    <item>Logans Run</item> 
</string-array> 
</resources> 

现在我可以很容易地获得一个数组,然后使用随机生成器。

到目前为止,这已经足够了。

但是后来在制作应用程序的过程中,我不得不按照流派过滤,也要根据篇幅进行过滤。 这就是为什么我试图使用第一个溃败,如我最初的问题所示。 这将是伟大的,如果任何人有一个建议,使这项工作!