使用 StickyGridHeaders

2023-12-12

粘性网格标题,但它没有按应有的方式工作,或者至少没有按我想要的方式工作。

所以我得到了这个列表,里面有其他列表,然后我创建了一个标题列表(我使用原始列表)和一个完整的项目列表(所有子项目),然后像这样调用适配器:

List<CalendarDate.CalendarTvShowEpisode> lista=new LinkedList<CalendarDate.CalendarTvShowEpisode>();
for(CalendarDate l:response){
        lista.addAll(l.episodes);
    }
setListAdapter(new WeekCalendarAdapter(getActivity(), weekCalendar,lista));

然后我就有了我的适配器:

 public class WeekCalendarAdapter extends BaseAdapter implements StickyGridHeadersBaseAdapter {

        private final List<CalendarDate> mListHeaders;
        private final List<CalendarDate.CalendarTvShowEpisode> lista;
        private LayoutInflater inflater;

        public WeekCalendarAdapter(Context context, List<CalendarDate> mList, List<CalendarDate.CalendarTvShowEpisode> lista) {
            this.mListHeaders = mList;
            this.lista=lista;
            inflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
           return lista.size();
        }

        @Override
        public Object getItem(int i) {
            return lista.get(i);
        }

        @Override
        public long getItemId(int i) {
            return lista.get(i).episode.firstAired.getDay();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.calendarweek_item_episode, parent, false);
            }

            AQuery aq= new AQuery(convertView);
            aq.id(R.id.imageViewCalendarEpisodeBackdrop).image(lista.get(position).episode.images.screen);
            aq.id(R.id.textViewCalendartext).text(lista.get(position).episode.firstAired.getDay()+"");


            return convertView;
        }


        @Override
        public int getCountForHeader(int header) {
            return mListHeaders.get(header).episodes.size();
        }

        @Override
        public int getNumHeaders() {
            return mListHeaders.size();
        }

        @Override
        public View getHeaderView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.calendarweek_item, parent, false);
            }

            AQuery aq = new AQuery(convertView);
            SimpleDateFormat format = new SimpleDateFormat("E MM dd, yyyy");
            aq.id(R.id.textViewCalendarWeekDay).text(format.format(mListHeaders.get(position).date) + "");

            return convertView;
        }

我得到的结果只是一个普通的列表视图,所有项目都在另一个列表视图下面排序,没有网格视图也没有标题。 我做错了什么?


终于知道怎么做了。

主要问题是它不能是一个 listfragment,因为 listfragment 有一个 listview。它必须是一个片段,然后你的视图需要有一个 com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView

所以代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.calendarweek_fragment, container, false);


        StickyGridHeadersGridView l = (StickyGridHeadersGridView) rootView.findViewById(R.id.listViewCalendar);
        mAdapter = new WeekCalendarAdapter(getActivity(), weekCalendar, lista);
        l.setAdapter(mAdapter);
return rootView;
}

和视图:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView
        android:id="@+id/listViewCalendar"

        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="160dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:gravity="left"
        android:background="@color/calendar_background"/>
</LinearLayout>

我的适配器

public class WeekCalendarAdapter extends BaseAdapter implements StickyGridHeadersBaseAdapter {

        private final List<CalendarDate> mListHeaders;
        private final List<CalendarDate.CalendarTvShowEpisode> lista;
        private LayoutInflater inflater;

        public WeekCalendarAdapter(Context context, List<CalendarDate> mList, List<CalendarDate.CalendarTvShowEpisode> lista) {
            this.mListHeaders = mList;
            this.lista = lista;
            inflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
            return lista.size();
        }

        @Override
        public CalendarDate.CalendarTvShowEpisode getItem(int i) {
            return lista.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.calendarweek_item_episode, parent, false);
            }

           //EDIT YOUR GRID ITEM HERE
            return convertView;
        }

        @Override
        public int getCountForHeader(int i) {
            return mListHeaders.get(i).episodes.size();
        }

        @Override
        public int getNumHeaders() {
            return mListHeaders.size();
        }

        @Override
        public View getHeaderView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.calendarweek_item, parent, false);
            }
           //EDIT YOUR VIEW HEADER HERE


            return convertView;
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 StickyGridHeaders 的相关文章

随机推荐

  • 我如何从android中的广播接收器访问数据库?

    我正在开发一个警报应用程序BroadcastReceiver 这里我需要从数据库检查警报是否打开或关闭 所以我需要在广播事件到来时检查警报的状态 我必须将数据库访问代码放入BroadcastReceiver class onReceive
  • 以编程方式自动布局不起作用

    我想以编程方式将 UIImageView 添加到视图中 并添加约束以使其垂直和水平居中 使用故事板 它可以工作 但不能以编程方式工作 class ViewController UIViewController override func v
  • Mysqli 和在插入期间绑定多个值集[重复]

    这个问题在这里已经有答案了 希望有人可以在这里给我一些见解 当必须一次将多行插入表中时 我使用了如下所示的 sql INSERT INTO some names firstName lastName VALUES Joe Smith Fre
  • mysql按类ajax更新表

    我正在尝试使用 ajax 按类而不是 id 更新行数量 我在谷歌上搜索了几个小时试图解决这个问题 但我能找到的所有东西似乎都不起作用 到目前为止我的代码是 include config php id GET id sql2 SELECT F
  • geom_bar 中的条形宽度不相等

    对于以下数据框 我想使用以下方法绘制几个条形图ggplot df lt data frame Disease c Disease1 Disease2 Disease3 Disease3 Disease3 Disease4 Disease5
  • 使用 Freebase API 时如何从 mqlread() 获取光标?

    我正在使用 Python Freebase 模块MQLREAD 使用以下查询 query cursor True id None type games game mid None 返回 100 个条目 但结果不包括 光标 如果您手动运行查询
  • 在函数参数中用更具体的类型替换“unknown”时出错

    在我正在处理的代码库中 拥有一个包含具有类型参数的函数的通用类型是有意义的unknown 然后 无论何时使用该类型 都将函数的参数类型缩小为更具体的类型 但是 这会引发如下错误 Type unknown is not assignable
  • 一页有多个 Google Analytics 4 脚本跟踪器

    Briefly 主要想法是我有一个集成了 Google Analytics 4 GA4 的网站和一个集成到该网站中的独立小部件 该网站也具有 GA4 结果 事件被发送到两个跟踪器 我如何才能将其彼此隔离 详细的 有 2 个 React We
  • 将输入文本值作为参数传递

    我想将用户输入作为参数传递到另一个页面 这是我的代码
  • Java 正则表达式抛出 java.util.regex.PatternSyntaxException:字母 g 的转义序列非法/不受支持

    我需要查看字符串中是否存在整个单词 这就是我尝试这样做的方式 if text matches word b do something 它适用于大多数单词 但以 a 开头的单词g导致错误 Exception in thread main ja
  • Cython - 动态 2D C++ 数组的 Memoryview

    目标 使用 Cython 从 2D C 字符数组获取 Memoryview 一点背景 我有一个本机 C 库 它生成一些数据并通过char 到 Cython 世界 数组在库中的初始化和操作大约是这样的 struct Result buffer
  • 从字符串列表创建 numpy 结构化数组

    我正在开发一个 python 实用程序来从第谷 2 星目录中获取数据 我正在开发的功能之一是查询目录并返回给定明星 ID 或一组明星 ID 的所有信息 我目前正在通过循环遍历目录文件的行来执行此操作 然后尝试将行解析为 numpy 结构化数
  • jQuery 甚至没有被调用

    我不知道这里发生了什么 我正在尝试在我的菜单上添加一个滑动切换 看起来非常简单 我试图简化它以尝试找到问题 这意味着我已经采取了所有链接出来和额外的jquery 只有底部的例子 最后的段落 但我不知道错误是什么 除了它不做任何事情 包括 剧
  • ASP.Net MVC 框架和数据绑定

    我在理解 MVC 框架背后的一些概念时遇到了一些困难 我正在做一个非常简单的应用程序 对产品进行分类 创建屏幕将仅使用一个下拉列表 显示类别列表 产品名称并提交 在普通的 Net 应用程序中 我会在 Page Load 中对服务器下拉列表进
  • 如何从窗口获取像素数据\像素缓冲区并提取RGB?

    我正在窗口上绘制文本 textOut 和矩形 我想从中获取 RGB 缓冲区 我该怎么做 有 2 个选项 首先 您可以使用 GetPixel 我用过很多次 它工作正常 COLORREF GetPixel HDC hdc int nXPos i
  • 如何找到 appleid.apple.com/auth/revoke 端点所需的 client_id 和 client_secret 值?

    我想在我的项目中为通过 Apple REST API 登录的用户使用帐户删除功能 在我的 iOS 应用程序中 curl 请求中指定的 client id 和 client secret 值对应于什么值 curl v POST https a
  • jquery 验证插件 - 提交时不验证

    我有一个包含多个字段的表单 我想在键盘输入和提交时验证其中一些字段 我调用 jquery 1 9 1 然后调用插件 1 11 1 然后使用我的 js 调用外部文件 我通过 Firebug 看到它们都在加载 如果我使用下面的代码 它根本不会验
  • HTML 全屏布局,具有最小宽度、最大宽度

    我有一个项目 例如 一个 div 标签 它占据屏幕宽度的 1 3 最小宽度为 500px 最大宽度为 700px 在它旁边 还有另一个项目占据屏幕的其余部分 如果我只是指定 66 的宽度 只要其他项目的高度不采用最大值之一 它就可以正常工作
  • 阻止杰克逊将数字读取为字符串

    Jackson 将输入数字读取为字符串 作为下面的示例 Student 类将名称 4567 读取为字符串 例如 输入 name 4567 Java类 Class Student String name Jackson 正在解析 JSON 文
  • 使用 StickyGridHeaders

    粘性网格标题 但它没有按应有的方式工作 或者至少没有按我想要的方式工作 所以我得到了这个列表 里面有其他列表 然后我创建了一个标题列表 我使用原始列表 和一个完整的项目列表 所有子项目 然后像这样调用适配器 List