错误:尝试调用接口方法';int java.util.List.size()';关于空对象引用
我正在创建一个在回收器视图中显示视频的应用程序,我已经可以将视频存储在Firestore数据库中,但在运行我的应用程序时出现以下错误:错误:尝试调用接口方法';int java.util.List.size()';关于空对象引用,java,android,nullpointerexception,android-recyclerview,Java,Android,Nullpointerexception,Android Recyclerview,我正在创建一个在回收器视图中显示视频的应用程序,我已经可以将视频存储在Firestore数据库中,但在运行我的应用程序时出现以下错误: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference at com.example.carlos.trendy.FeedRecyclerAdapter.getItem
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at com.example.carlos.trendy.FeedRecyclerAdapter.getItemCount(FeedRecyclerAdapter.java:35)
我的代码:
public class FeedRecyclerAdapter extends RecyclerView.Adapter<FeedRecyclerAdapter.ViewHolder> {
public List<Feed>feedList;
public FeedRecyclerAdapter(List<Feed> feedList){
this.feedList = feedList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.feed_row, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String desc_data = feedList.get(position).getDesc();
holder.setDesc(desc_data);
}
@Override
public int getItemCount() {
return feedList.size();///ERROR
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView desc;
private View mView;
public ViewHolder(View itemView) {
super(itemView);
mView=itemView;
}
public void setDesc(String descText){
desc = mView.findViewById(R.id.post_desc);
desc.setText(descText);
}
}
}
公共类FeedRecyclerAdapter扩展了RecyclerView.Adapter{
公共列表;
公共FeedRecyclerAdapter(列表feedList){
this.feedList=feedList;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutFlater.from(parent.getContext()).flate(R.layout.feed_行,parent,false);
返回新的ViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
字符串desc_data=feedList.get(位置).getDesc();
保持器设置描述(描述数据);
}
@凌驾
public int getItemCount(){
返回feedList.size();///错误
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
私有文本视图描述;
私有视图;
公共视图持有者(视图项视图){
超级(项目视图);
mView=项目视图;
}
公共void setDesc(字符串descText){
desc=mView.findviewbyd(R.id.post\u desc);
desc.setText(descText);
}
}
}
饲养活动:
public class FeedActivity extends AppCompatActivity {
private Context mContext = FeedActivity.this;
private static final int ACTIVITY_NUM = 0;
private FirebaseFirestore firebaseFirestore;
private RecyclerView mFeedList;
private List<Feed> feedList;
private FeedRecyclerAdapter feedRecyclerAdapter;
public void videoPicker(View view){
Intent intent = new Intent(FeedActivity.this, postActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_feed);
mFeedList = this.findViewById(R.id.feed_list);
feedRecyclerAdapter = new FeedRecyclerAdapter(feedList);
mFeedList.setLayoutManager(new LinearLayoutManager(this));
mFeedList.setAdapter(feedRecyclerAdapter);
feedList = new ArrayList<>();
firebaseFirestore = FirebaseFirestore.getInstance();
firebaseFirestore.collection("Posts").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
for (DocumentChange documentChange: documentSnapshots.getDocumentChanges()){
if (documentChange.getType() == DocumentChange.Type.ADDED){
Feed feed = documentChange.getDocument().toObject(Feed.class);
feedList.add(feed);
feedRecyclerAdapter.notifyDataSetChanged();
}
}
}
});
setupBottomNavigationView();
}
private void setupBottomNavigationView() {
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavViewBar);
BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationView);
Menu menu = bottomNavigationView.getMenu();
MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
menuItem.setChecked(true);
}
@Override
protected void onStart() {
super.onStart();
}
public static class FeedViewHolder extends RecyclerView.ViewHolder {
View mView;
public FeedViewHolder(View itemView) {
super(itemView);
itemView = mView;
}
public void setDesc(String desc){
TextView post_desc = mView.findViewById(R.id.post_desc);
post_desc.setText(desc);
}
}
}
公共类FeedActivity扩展了AppCompative活动{
私有上下文mContext=FeedActivity.this;
私有静态最终整数活动_NUM=0;
私人FirebaseFirestore FirebaseFirestore;
私人回收站查看mFeedList;
私人名单;
私人饲料回收器适配器饲料回收器适配器;
公共无效视频选择器(视图){
意向意向=新意向(FeedActivity.this、postActivity.class);
intent.addFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP);
星触觉(意向);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_提要);
mFeedList=this.findviewbyd(R.id.feed\u list);
feedRecyclerAdapter=新的feedRecyclerAdapter(feedList);
setLayoutManager(新的LinearLayoutManager(this));
设置适配器(feedRecyclerAdapter);
feedList=新的ArrayList();
firebaseFirestore=firebaseFirestore.getInstance();
firebaseFirestore.collection(“Posts”).addSnapshotListener(新的EventListener(){
@凌驾
public void OneEvent(QuerySnapshot文档快照,FireBaseFireStore异常e){
对于(DocumentChange DocumentChange:documentSnapshots.getDocumentChanges()){
if(documentChange.getType()==documentChange.Type.ADDED){
Feed Feed=documentChange.getDocument().toObject(Feed.class);
feedList.add(feed);
feedRecyclerAdapter.notifyDataSetChanged();
}
}
}
});
setupBottomNavigationView();
}
私有void setupBottomNavigationView(){
BottomNavigationView BottomNavigationView=findViewById(R.id.bottomNavViewBar);
启用导航(mContext,bottomNavigationView);
Menu Menu=bottomNavigationView.getMenu();
MenuItem MenuItem=menu.getItem(活动数量);
menuItem.setChecked(true);
}
@凌驾
受保护的void onStart(){
super.onStart();
}
公共静态类FeedViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共FeedViewHolder(查看项目视图){
超级(项目视图);
itemView=mView;
}
公共void setDesc(字符串desc){
TextView post_desc=mView.findviewbyd(R.id.post_desc);
后描述设置文本(描述);
}
}
}
有人能帮我吗?您可以在这里初始化适配器:
feedRecyclerAdapter=新的feedRecyclerAdapter(feedList)代码>
但是feedList
为空
您必须初始化它
移动所有这些行:
feedRecyclerAdapter = new FeedRecyclerAdapter(feedList);
mFeedList.setLayoutManager(new LinearLayoutManager(this));
mFeedList.setAdapter(feedRecyclerAdapter);
在这一行之后:
feedList = new ArrayList<>();
feedList=newarraylist();
发布活动中设置适配器的代码。我已经编辑了帖子。请参阅我编辑的答案。谢谢,这很有效。非常感谢:)我很高兴_______