java ArrayList<object>inside ArrayList<anotherObject>在类中,以在RecyclerView中发送数据
对不起,我是法语
我有3个类,其中2个有ArrayList。不幸的是,我的2 ArrayList对象无法工作。我在Android Studio中使用Java
第一类:面板:
public class Panel {
public String nameUser;
public String street;
public String panelId;
public ArrayList<Block> listBlock;
public Panel(String nameUser, String street, String panelId, ArrayList<Block> listBlock) {
this.nameUser = nameUser;
this.street = street;
this.panelId = panelId;
this.listBlock = listBlock;
}
public String getNameUser() {
return nameUser;
}
public void setNameUser(String nameUser) {
this.nameUser = nameUser;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getPanelId() {
return panelId;
}
public void setPanelId(String panelId) {
this.panelId = panelId;
}
public ArrayList<Block> getListBlock() {
return listBlock;
}
public void setListBlock(ArrayList<Block> listBlock) {
this.listBlock = listBlock;
}
}
第二类:区块:
import java.util.ArrayList;
public class Block {
public String nameLine;
public ArrayList<Breaker> listBreaker;
public String getNameLine() {
return nameLine;
}
public void setNameLine(String nameLine) {
this.nameLine = nameLine;
}
public ArrayList<Breaker> getListBreaker() {
return listBreaker;
}
public void setListBreaker(ArrayList<Breaker> listBreaker) {
this.listBreaker = listBreaker;
}
public Block(String nameLine, ArrayList<Breaker> listBreaker) {
this.nameLine = nameLine;
this.listBreaker = listBreaker;
}
}
第三级(最后一级):断路器:
public class Breaker {
public String name;
public String utilisation;
public Breaker(String name, String utilisation) {
this.name = name;
this.utilisation = utilisation;
}
public String getNom() {
return name;
}
public void setNom(String nom) {
this.name = name;
}
public String getUtilisation() {
return utilisation;
}
public void setUtilisation(String utilisation) {
this.utilisation = utilisation;
}
}
我的主要活动:
public class Activity_PanelHome extends AppCompatActivity {
private ArrayList<Panel> listPanel;
private ArrayList<Block> listBlock;
private ArrayList<Breaker> listBreaker;
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_panelhome);
recyclerView = findViewById(R.id.recyclerViewHomePage);
ArrayList<Panel> listPanel = new ArrayList<>();
List<Block> listBlock = new ArrayList<>();
List<Breaker> listBreaker = new ArrayList<Breaker>();
setUserInfo();
setAdapter();
}
private void setAdapter() {
RecyclerAdapter adapter = new RecyclerAdapter(listPanel);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
}
private void setUserInfo() {
listBreaker.add(new Breaker("BreakerName","BreakerUtilisation"));
listBlock.add(new Block("BlockName",listBreaker));
listPanel.add(new Panel("PanelUserName","PanelStreet","PanelId",listBlock));
}
}
我犯的错误
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at com.example.application.Activity.Activity_PanelHome.setUserInfo(Activity_PanelHome.java:48)
at com.example.application.Activity.Activity_PanelHome.onCreate(Activity_PanelHome.java:36)
Ligne 36:(这就是方法)
setUserInfo();
第48页:
listBreaker.add(new Breaker("BreakerName","BreakerUtilisation"));
提前感谢您的帮助:)
# 1 楼答案
因为全局变量
private ArrayList<Breaker> listBreaker;
从未分配给新列表,所以它将保持NULL
在
onCreate
中,您只是将List<Breaker> listBreaker = new ArrayList<Breaker>();
新对象分配给另一个列表相反,它应该如下所示:
有关空指针的详细信息:What is a NullPointerException, and how do I fix it?