listview回收与不同的布局样式

时间:2016-01-03 18:48:52

标签: android listview android-listview aquery

我有一个带有不同样式项目的列表视图,带有日期的标题样式(黑色)和该日期项目的项目窗框。

现在我向下滚动信息不在正确的项目中。有时标题会出现在黑条中,有时日期会出现在项目阶梯中。

图像也不正确。我在我正在构建的应用程序中使用这样的listview适配器,但从未有过这个,这是我第一次在单个列表视图中使用不同的布局。

我使用Aquery进行图像加载。

请指出我的错误。

Greathings

enter image description here

binder java

request()

2 个答案:

答案 0 :(得分:0)

请覆盖BaseAdapter的getItemViewType() 并尝试以下代码。

public int getItemViewType (int position) {
    if(TvGids.get(position).get("header").equals("true")){
        return 0;
    }else{
        return 1;
    }
}

答案 1 :(得分:0)

现在你的ListView不知道标题和普通项之间的区别。它认为你的所有物品都是一样的。当您实际开始回收视图时,这会导致问题,因为您将获得与convertView错误的行布局。

您需要执行以下任一策略:

  1. 使用getItemViewType()getViewTypeCount()。使用这些方法ListView现在会知道有不同的项目类型并且会正确回收它们,但它要求getCount()返回项目数量PLUS标题数量(我不确定您当前的实现是否这样做)。我会推荐给你一个名为The World of ListView的视频,它会更详细地解释这一点。

  2. 将标题放在常规项目的布局XML中,并仅使用此布局。默认情况下,标题可见性GONE。如果项目应显示标题,请将标题可见性设置为VISIBLE。这对所有列表项使用一种布局,代价是在视图层次结构中有一些额外的视图。

  3. 基本上,#1正确地实现了两种不同类型的列表项,而#2则通过使列表项实际上是相同的项来执行相反的操作。

    还有另一种选择:使用RecyclerView并使用ItemDecoration来实现标头。我会让你自己探索这个。