java - Android:animateLayoutChanges(false) 以编程方式给出 NullPointerException

标签 java android nullpointerexception android-recyclerview

这与“以编程方式进行 animateLayoutChanges”不重复。

想要 View 上的默认动画效果发生变化除了删除对象时的淡出效果。我无法使用 disableTransitionType(),因为它是在 API 16 中添加的。我所能想到的就是将 android:animateLayoutChanges 禁用为 false,删除 View 并将其再次设置为 true。在我的recyclerView中,我想通过holder.rootView.setLayoutTansition(null)删除动画。但不幸的是它给了我NullPointerException

我的代码的一部分是这样的:

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    SavedMessagePackage current = data.get(position);
    final String message = current.message;
    holder.message.setText(message);
    holder.message.setMaxLines(2);
    holder.message.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (holder.button.getVisibility() == View.GONE) {
                holder.button.setVisibility(View.VISIBLE);
                holder.message.setMaxLines(Integer.MAX_VALUE);
                holder.message.setText(message);
            }
            else if (holder.button.getVisibility() == View.VISIBLE) {
                holder.root_view.setLayoutTransition(null); // NullPointerException
                holder.button.setVisibility(View.GONE);
                holder.message.setMaxLines(2);
                holder.root_view.setLayoutTransition(new LayoutTransition());
            }
        }
    });
    holder.button.setVisibility(View.GONE);
}

我怎样才能实现这个目标?

最佳答案

在您的情况下,您的 holderroot_view 可能为 null,但由于之前已成功访问holder,因此 root_view 为 null。

因此,您很可能之前没有分配 holder.root_view

关于java - Android:animateLayoutChanges(false) 以编程方式给出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37371419/

相关文章:

java - HashMap 具有旧值,直到它们不再被引用

java - 什么是NullPointerException,我该如何解决?

java - Java Applet 中的文件权限错误

java - 在 Java 文件中间写入字节的最佳方式

Android:在图书馆项目中使用服务

android - 将下拉列表微调器添加到alertdialog Android Studio

java - 设置椭圆形 throw 错误

java - catch block 中的空指针

java - 将文本文件加载到 HashMap<Integer, List<String>> java

java - 使用 SimpleDateFormat 将具有 GMT 时区的字符串解析为 Date