Android:animateLayoutChanges(false)以编程方式提供NullPointerException

时间:2016-05-22 06:52:19

标签: java android nullpointerexception android-recyclerview

这与'animateLayoutChanges以编程方式'不重复。

想要我的视图上的默认动画效果会从删除对象的淡出效果更改之外。我无法使用disableTransitionType(),因为它已在API 16中添加。我只能想到禁用android:animateLayoutChangesfalse,删除视图并将其重新设置为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);
}

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以让holderroot_view为空,但由于之前已成功访问持有者,因此root_view为空。

因此,您很可能之前没有指定holder.root_view