【问题标题】:Use custom number of items in ListView using ArrayAdapter使用 ArrayAdapter 在 ListView 中使用自定义数量的项目
【发布时间】:2014-06-23 16:41:19
【问题描述】:

我正在ListView 中显示列表视频集。为此,我创建了ArrayAdapter 的子类,并将所有剧集的列表传递给它。这工作得很好。

现在,我想在列表中添加 三个 附加项目,因为列表应该以描述剧集所属节目的项目开头。我还添加了两个额外的标题(一个用于节目描述,一个用于剧集开始前)。

所以我的ListView 应该有效地显示episodeList.size()+3 项目。我的问题是我是否必须在episodeList 中伪造这三个项目并在列表的开头插入三个虚拟项目以告诉ArrayAdapter 它应该显示我想要的项目数量,还是有一种不那么骇人听闻的方法?

【问题讨论】:

  • 看看这是否是一个解决方案。为您的子类创建一个与前一个对象相同的新对象,并在其中添加 3 个项目。现在为您的列表视图设置此对象。

标签: android android-listview android-arrayadapter


【解决方案1】:

您可以通过带有部分的 Listview 来实现这一点。教程在这里

https://code.google.com/p/android-amazing-listview/

【讨论】:

  • 使用第三方组件不是我的首选方式,我问是否有办法调整ListView 和ArrayAdapter 的行为以达到我的目标,而不是解决方法。 ..
【解决方案2】:

一个简单的方法是在你为其他项目膨胀的视图上添加你想要添加的这三个视图,以防可见性属性设置为 GONE,然后在适配器中为 0,您将其可见性设置为 VISIBLE。

【讨论】:

  • 这看起来也很hackish,是不是有更优雅的方法可以做到这一点,或者ListView 和ArrayAdapter 的交互真的是静态的而不是可定制的?
  • AFAIK 是的,它是(静态的)。更好的解决方案(即使使用相同的方法)是为您的项目创建两个 xml 布局(比如说 layout_header 和 layout_item),如果位置为 0,则对第一个布局(layout_header)进行膨胀。这样可以避免膨胀更复杂的视图每次(只有在必要时才会这样做)。
  • 是的,我已经这样做了。老实说,从所有答案来看,在开头添加三个虚拟剧集似乎仍然是解决问题的最简单方法......我认为可能有一种方法可以直接告诉ArrayAdapter我将需要三个模式项目一开始,唯一简单的方法是添加三个虚拟项目。因为我必须处理我不想要的视图的自定义,所以其他所有的开销都要多得多。
【解决方案3】:

您可以添加headerview,以便将自定义布局绑定为listview的headerlayout..所以您的滚动与listview相同......并且您不需要在arraylist中绑定假项目。

View headerview = ((LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).in    flate(R.layout.description_and_start_view, null, false);
listview.addHeaderView(headerview);

关注this

【讨论】:

    【解决方案4】:

    您可以使用包含所有 3 个额外视图的 layout 并将 layout 添加为 listview 的 headerview。Here 是一个很好的教程那。我会推荐这种方法是您的附加视图使用 不同的数据 与 listview items

    相比

    您还可以根据项目的位置修改适配器以扩展多个布局。 this link 将向您展示如何在同一 listview 中添加 multiple layouts。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      相关资源
      最近更新 更多