2015-04-22 96 views
0

My Arraylist只存儲一個對象。每次輸入一個新對象時,它都會覆蓋當前的對象。ArrayList只存儲一個對象

調用方法:

public void saveBookingInfo(View view) { 

    EditText applicantNameText = (EditText) findViewById(R.id.applicantNameTextField); 
    EditText itemToBurnText = (EditText) findViewById(R.id.itemToBurnTextField); 

    String appName = applicantNameText.getText().toString(); 
    String appItemToBurn = itemToBurnText.getText().toString(); 

    if (appItemToBurn.isEmpty() || appName.isEmpty()) { 
     Toast.makeText(BookingScreen.this, "Please fill in all fields.", Toast.LENGTH_SHORT).show(); 
    } 
    else { 
     sendApplication.storeApplication(appName, appItemToBurn); 
     this.finish(); 
    } 
} 

ArrayList的方法:

public void storeApplication(String name, String item){ 
    ArrayList<Application> peopleAttending = new ArrayList<>(10); 
    peopleAttending.add(new Application(name, item)); 
} 

回答

7

你聲明List<Application>本地參數的方法。改爲將其作爲班級中的一個字段。

private List<Application> peopleAttending = new ArrayList<>(); 

public void storeApplication(String name, String item) { 
    peopleAttending.add(new Application(name, item)); 
} 
+0

我碰到有一個問題。因爲對象'發送應用程序'是GAClass類型的,它會清除數組列表,因爲數組列表將包含在對象中,並且當該方法被破壞時,數組列表也會:/ –

+1

嗯,我們沒有魔晶只能看到你的計算機中的所有代碼。除非你解釋你真正的問題,否則我們無法想象列表的範圍。 AFAIK解決了你的問題中提到的問題。如果你需要使用這個列表來延長壽命,那麼你應該在一個對象引用足夠長的類中定義它,並將它作爲參數傳遞給像這樣壽命較短的類的實例。 –

1

您每次調用方法時都會創建一個new ArrayList。您應該只創建一次ArrayList並傳遞該方法的引用,或者將引用作爲實例變量。

+0

請你給我一個書面的例子。我從看到示威中學得更好。 –

0

,你可以嘗試改變類的構造函數的對象sendApplication

class SendApplication{ 
    List<Application> peopleAttending = null; 
    public SendApplication(){ 
     List<Application> peopleAttending = new ArrayList<Application>(); 
    } 
    public void storeApplication(String name, String item) { 
     peopleAttending.add(new Application(name, item)); 
    } //...... other methods follow 
}