将Spinner添加到Listview标头并动态填充值

时间:2012-03-01 06:42:14

标签: android android-listview android-spinner

我有一个关于将微调器添加到listview标题的问题:

  1. 我应该如何在listview标题中显示一个微调器。
  2. 如何根据列表视图中的值动态填充此微调器中的值。
  3. 描述: 我有一个listview,它从XML文件中填充值(放在网上)。根据以前屏幕上的用户选择和/或XML文件中的数据,此列表可能很大。

    我想在listview的顶部添加一个微调器,以便用户可以选择执行过滤操作/排序操作。该如何实现?

    例如: 如果我的应用程序显示库中可用的书籍列表。微调器应该帮助用户: 1.根据书名按字母顺序排序 2.根据作者姓名按字母顺序排序 3.过滤掉与“战争”相关的书籍 4.仅筛选出与“历史”相关的书籍 5.仅筛选出与“科学”相关的书籍

    当我填充listview时,XML提供了诸如“Book of Book”,“Author”,“Title”等详细信息。

    问题是,如何将旋转器放在顶部和底部?根据列表视图中的书籍列表,为Spinner填充类型(战争,历史,犯罪等)的值。

    我试图尽可能具有描述性。如果需要进一步的详细信息,请告诉我。

    任何帮助都将受到高度赞赏。

    谢谢你们!

1 个答案:

答案 0 :(得分:0)

要将微调器放在ListView上方,请检查此方法:http://developer.android.com/reference/android/widget/ListView.html#addHeaderView%28android.view.View%29

或者你可以在Activity的父布局中放置关于ListView的自定义标题布局。 更多ListView帮助:http://www.vogella.de/articles/AndroidListView/article.html#listview_overview

就填充微调器而言,您可以将微调器设置为您想要的任何值。在线示例中(http://developer.android.com/resources/tutorials/views/hello-spinner.html):

String[] myValues = // Put code here for the values and size of array you want. 
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this, YOUR_STRING_ARRAY_VARIABLE_HERE, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

作为程序员,您需要弄清楚如何在微调器中选择哪个项目并对listView进行更改。要更新列表视图中的值,请查看以下内容:update listview dynamically with adapter

一个解决方案以及我将如何为Entry创建一个自定义Java类,以便您可以接收XML文件并为每个条目实例变量或特征进行排序。然后使用此数据模型,创建一个类EntryList或EntryArray,它可以处理Entry数据对象的排序。然后有一个toStringArray()方法,它将返回一个字符串数组。通过这种方式,您可以保留数据,并允许所需的所有排序。每次单击微调器时,将调用EntryList或EntryArray中的相应方法,将新的String数组放入适配器中,并且用户将看到新的排序列表。

这可能需要消化很多,所以请阅读所有链接,看看是否可以实现它。干杯!