[英]ArrayList<object> inside ArrayList<anotherObject> inside a class, to send the data in RecyclerView
對不起 forms 我是法語的英語
我有 3 個 class,其中 2 個有 ArrayList。 不幸的是,我的 object 和 2 ArrayList 無法工作。 我在 Android Studio 中使用 Java
第一個 class:面板:
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;
}
}
第二個 class: 塊:
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"));
預先感謝您的幫助:)
因為你的全局變量private ArrayList<Breaker> listBreaker;
從未分配到新列表中,它保持NULL
。
在你的onCreate
你只是分配List<Breaker> listBreaker = new ArrayList<Breaker>();
新 object 到另一個列表。
相反,它應該如下:
listPanel = new ArrayList<>();
listBlock = new ArrayList<>();
listBreaker = new ArrayList<Breaker>();
有關 Null 指針的更多信息: 什么是 NullPointerException,我該如何解決?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.