Single Item上的Android StickyListHeaders

Wen*_*ger 1 android android-layout android-listview

我正在使用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;
    }

}
Run Code Online (Sandbox Code Playgroud)

MrM*_*fen 5

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

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

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

希望这可以解决问题:)