IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> RecylcerView getItemViewType position一直是0 -> 正文阅读

[移动开发]RecylcerView getItemViewType position一直是0

记录一下:
https://blog.csdn.net/qq_26075861/article/details/86685293
在RecyclerView外层套上一层RelativeLayout即可

https://blog.csdn.net/Moonlighting_/article/details/52385267
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthSpec, expandSpec);
}

https://blog.csdn.net/the_spring/article/details/54236996
1.getItemCount()返回值<=0 ;
2.设置LayoutManager ;
3.被ScrollView嵌套
ok重点说一下第三点
recyclerview 25可以被scrollview嵌套,可以正常显示
recyclerview 23被scrollview嵌套时,无法正常显示

getItemCount()返回值<=0 ;肯定是对的。其他几个没有验证。
我再来补充一种情况:
由于我们经常会使用开源的第三方的RecycleView,并且我们可能还会把他的代码抄下来:
于是:

 @Override
        public int getItemViewType(int position) {
            if (isRefreshHeader(position)) {
                return TYPE_REFRESH_HEADER;
            }

            if (isLoadMoreFooter(position)) {
                return TYPE_LOAD_MORE_FOOTER;
            }
            int adjPosition = position - 1;
            int adapterCount;
            if (adapter != null) {
                adapterCount = adapter.getItemCount();
                if (adjPosition < adapterCount) {
                    int type = adapter.getItemViewType(adjPosition);
                    if (isReservedItemViewType(type)) {
                        throw new IllegalStateException("PullToRefreshRecyclerView require itemViewType in adapter should be less than 10000 ");
                    }
                    return type;
                }
            }
            return 0;
        }

比如PullRecyclerView的代码中,你的Adpater是被他wrap了一层的。
由于他默认认为有header,所以position固定-1。
这个问题,如果你遇到了类似的问题也可以往别人的源码中查一下。

https://my.oschina.net/caomenglong/blog/747197
https://github.com/amardeshbd/android-recycler-view-wrap-content


<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
tools:listitem="@layout/row_list_item">

        </android.support.v7.widget.RecyclerView>

    </RelativeLayout>

mRecyclerView.setHasFixedSize(true);

    // use a linear layout manager
    mLayoutManager = new LinearLayoutManager(getContext());
    mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);

    // Disabled nested scrolling since Parent scrollview will scroll the content.
    mRecyclerView.setNestedScrollingEnabled(false);

    // specify an adapter (see also next example)
    mAdapter = new SimpleListAdapter(DataSetProvider.generateDataset());
    mRecyclerView.setAdapter(mAdapter);
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 11:02:31  更:2021-07-14 11:03:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 4:43:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码