【发布时间】:2020-12-06 17:15:46
【问题描述】:
我在片段中使用 recyclderview。 代码 1 和代码 2 有什么不同? 当我第一次将代码 2 与代码 3 一起使用时,它发生了错误。
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext()); // code 1
// LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // code 2
context = parent.getContext(); //code 3
View itemView = inflater.inflate(R.layout.gallery_item, parent, false);
return new ViewHolder(itemView);
}
错误
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at com.example.bstcproject.adapter.GalleryAdapter.onCreateViewHolder(GalleryAdapter.java:43)
at com.example.bstcproject.adapter.GalleryAdapter.onCreateViewHolder(GalleryAdapter.java:23)
我留下了代码 3,我使用了代码 1 而不是代码 2。效果很好。
我认为它与上下文有关。但我不知道代码 1 和代码 2 有什么不同。
代码 1 和代码 2 不是都有上下文吗? 有什么不同?
【问题讨论】:
-
为什么 3 在 2 之后? 2中发起的上下文在哪里?
标签: android android-recyclerview adapter android-context