簡體   English   中英

ArrayList<object> ArrayList 內部<anotherobject>在 class 內部,在 RecyclerView 中發送數據<div id="text_translate"><p>對不起 forms 我是法語的英語</p><p>我有 3 個 class,其中 2 個有 ArrayList。 不幸的是,我的 object 和 2 ArrayList 無法工作。 我在 Android Studio 中使用 Java</p><p> 第一個 class:面板:</p><pre> public class Panel { public String nameUser; public String street; public String panelId; public ArrayList&lt;Block&gt; listBlock; public Panel(String nameUser, String street, String panelId, ArrayList&lt;Block&gt; 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&lt;Block&gt; getListBlock() { return listBlock; } public void setListBlock(ArrayList&lt;Block&gt; listBlock) { this.listBlock = listBlock; } }</pre><p> 第二個 class: 塊:</p><pre> import java.util.ArrayList; public class Block { public String nameLine; public ArrayList&lt;Breaker&gt; listBreaker; public String getNameLine() { return nameLine; } public void setNameLine(String nameLine) { this.nameLine = nameLine; } public ArrayList&lt;Breaker&gt; getListBreaker() { return listBreaker; } public void setListBreaker(ArrayList&lt;Breaker&gt; listBreaker) { this.listBreaker = listBreaker; } public Block(String nameLine, ArrayList&lt;Breaker&gt; listBreaker) { this.nameLine = nameLine; this.listBreaker = listBreaker; } }</pre><p> 第三課(最后一課):斷路器:</p><pre> 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; } }</pre><p> 我的主要活動:</p><pre> public class Activity_PanelHome extends AppCompatActivity { private ArrayList&lt;Panel&gt; listPanel; private ArrayList&lt;Block&gt; listBlock; private ArrayList&lt;Breaker&gt; listBreaker; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_panelhome); recyclerView = findViewById(R.id.recyclerViewHomePage); ArrayList&lt;Panel&gt; listPanel = new ArrayList&lt;&gt;(); List&lt;Block&gt; listBlock = new ArrayList&lt;&gt;(); List&lt;Breaker&gt; listBreaker = new ArrayList&lt;Breaker&gt;(); 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)); } }</pre><p> 我得到的錯誤</p><pre>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)</pre><p> Ligne 36:(這是方法)</p><pre> setUserInfo();</pre><p> 利格 48:</p><pre> listBreaker.add(new Breaker("BreakerName","BreakerUtilisation"));</pre><p> 預先感謝您的幫助:)</p></div></anotherobject></object>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM