【问题标题】:Android StickyListHeaders on Single Item单个项目上的 Android StickyListHeaders
【发布时间】:2013-01-15 02:48:21
【问题描述】:

我正在使用库 StickyListHeaders,我很难弄清楚如何让它适用于我的特定应用程序。我只想在第二个列表项上有一个粘性标题。当我覆盖 getHeaderId() 方法并返回 1 时,它将标题放在列表的最顶部,而不是第二项的顶部。滚动也很跳跃。有没有人使用这个库取得了一些成功,可能知道发生了什么?

我正在使用 MergeAdapter,那么这是否会导致获取我设置的 ListView 的位置时出现问题?

这是我的适配器代码:

private class ProfileMergeAdapter extends MergeAdapter implements StickyListHeadersAdapter{

    @Override
    public View getHeaderView(int position, View convertView, ViewGroup parent) {

        LayoutInflater nameInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = (RelativeLayout) nameInflater.inflate(R.layout.name_line, null);
        convertView.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
        profilePhotoBottom = (ImageView) convertView.findViewById(R.id.profile_pic_bottom);
        TextView userName = (TextView) convertView.findViewById(R.id.userName);
        userName.setText(Utility.userName);
        profilePhotoBottom.setImageBitmap(photoBMPbot);
        return convertView;
    }

    @Override
    public long getHeaderId(int position) {
        return 1;
    }

}

【问题讨论】:

    标签: android android-layout android-listview


    【解决方案1】:

    @覆盖 public long getHeaderId(int position) { 返回 1; }

    如果您在此处返回 1,那么每个项目(在每个位置)的 headerId 都将为 1。因此您只会在最顶部获得一个标题。这种行为是正确的。

    您应该只为应该分组在同一标题下的项目返回相同的 ID。 例如,如果您要返回 position/3;每三个项目都会有一个标题。

    希望这可以解决问题:)

    【讨论】:

    • 感谢您的回复。今晚我会试一试。
    • 因此,如果我只想在第二个项目上添加标题,我可以执行 if 语句,如果位置为 1,则返回 1,如果位置为其他,则返回 0?
    • 我不知道 StickyListHeaders 究竟是如何工作的。我的猜测是这将导致 3 个标题(一个在顶部,一个在第二个项目上,一个在第三个项目之前)。但是你应该简单地尝试一下..
    • 就是这样。我想我只需要再摆弄一些,看看是否还有其他方法可以覆盖。谢谢。
    【解决方案2】:

    您需要按照他们的示例进行操作,因为他们完全按照您希望在他们的示例中执行的操作:

    @Override
    public long getHeaderId(int position) {
      if (position == 0) {
        return -1;
      } else {
        return 1;
      }
    }
    

    这将跳过第一个位置并返回位置 1 的标题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      相关资源
      最近更新 更多