java - 修改自定义 RecyclerView 的项目

标签 java android android-recyclerview android-custom-view

我正在尝试创建自定义 RecyclerView

首先,我只想旋转附加到我的 recyclerView 的列表的第一个元素。

这是我试图通过重写 setAdapter 方法来实现的:

public class CustomList extends RecyclerView {

    public CustomList(Context context) {
        super(context);
        init(context);
    }

    public CustomList(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public CustomList(Context context, @Nullable AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }

    public void init(Context context) {
    }

    @Override
    public void setAdapter(Adapter adapter) {
        super.setAdapter(adapter);
        getChildAt(0).setRotation(45);
    }

    @Override
    public void setLayoutManager(LayoutManager layout) {
        super.setLayoutManager(layout);
    }
}

但每次尝试更改列表中的元素时都会出现此错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setRotation(float)' on a null object reference

我想一个一个的获取这个RecyclerView的items来修改。是否可以到达我的 RecyclerView 的每个项目以添加修改?知道我实际上是在创建一个自定义 View 扩展 RecyclerView 而不是 RecyclerView 适配器

最佳答案

应用程序崩溃是因为您试图访问不存在的 View 。当您调用 setAdapter 时,它只是创建适配器对象并将其设置为 RecyclerView。那时 child 还没有被创建,所以 getChildAt(0) 返回 null 并且你得到了崩溃。

相反,您应该使用适配器进行项目 View 操作。在您的适配器中覆盖 onBindViewHolder 方法并在那里执行。每次当项目 View 绑定(bind)到 RecyclerView 时都会调用该方法。它有一个位置参数,您可以使用该参数仅旋转列表中的第一项。

更多信息在这里:https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#onBindViewHolder(VH,%20int,%20java.util.List%3Cjava.lang.Object%3E)

关于java - 修改自定义 RecyclerView 的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50925519/

相关文章:

java - 如何从json中获取列表列表?

java - 如何在 play-framework 中使用 json 数据重定向到另一个 Action

java - Spring 3 MVC,Tomcat Web 应用程序在几次请求后挂起

带有可选字段的 Android SimpleXml 序列化

android - 当用户触摸 recyclerview 项目时缩放动画

java - 将 Json 数据放入 TextView 和 ImageView 时不稳定

java - 非法参数异常 : Failed to serialize object

java - 通过引用在java中传递参数

android - 滚动监听器 - 第一个 distanceY 对于向下滚动总是负数?

java - 使用另一个 Activity 调用 xml 元素(android)