簡體   English   中英

從另一個類向arraylist添加對象

[英]add object to arraylist from another class

我遇到了問題。 我想添加一個名為Transactions的對象,就是這個:

public class Transaction {
private float value;
private int transaction_date;
private String description;

public Transaction(float value, int transaction_date, String description){
    super();
    this.value = value;
    this.transaction_date = transaction_date;
    this.description = description;
}

public float getValue(){
    return value;
}
public int getTransaction_date(){
    return transaction_date;
}
public String getDescription(){
    return description;
}

到我的main activityArrayList 好吧到目前為止還沒有那么多問題。 但是,如何從我想設置所需變量的其他活動(在我的情況下是值,transaction_date和description)中執行此操作? 這是我想要設置值的Activity(是的,我知道還沒有變量輸入):

public class AddMoneyTransaction extends AppCompatActivity {

EditText depositInputSix;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_money_transaction);

    //transaction list

    populateTransactionList();
    populateListView();

    //setup the button

    Button addDepositButton;
    addDepositButton = (Button)findViewById(R.id.addDepositButton);

    //make it work

    addDepositButton.setOnClickListener(
            new View.OnClickListener()
            {
                public void onClick(View view) {


                }
            });
}

//populated transaction list

protected void populateTransactionList() {

    myTransactions.add(new Transaction(1,19,"monday"));
    myTransactions.add(new Transaction(2,20,"tuesday"));
    myTransactions.add(new Transaction(3,21,"wednesday"));


}

//populated list view

private void populateListView() {
    ArrayAdapter<Transaction> adapter = new AssetsOverview.LastTransactionsListAdapter();
    ListView list = (ListView) findViewById(R.id.last_transactions_listView);
    list.setAdapter(adapter);
}

private class LastTransactionsListAdapter extends ArrayAdapter<Transaction>{
    public LastTransactionsListAdapter(){
        super(AddMoneyTransaction.this, R.layout.transaction_list_view, myTransactions);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        //make sure there is a view to work with (maybe null)
        View itemView = convertView;
        if (itemView == null){
            itemView = getLayoutInflater().inflate(R.layout.transaction_list_view, parent, false);
        }

        //find a transaction to work with

        Transaction currentTransaction = myTransactions.get(position);

        // fill the view:
        //    value
        TextView valueView = (TextView) itemView.findViewById(R.id.transactionValueView);
        valueView.setText(currentTransaction.getValue() + "$");

        //    date
        TextView dateView = (TextView) itemView.findViewById(R.id.transactionDateView);
        dateView.setText(currentTransaction.getTransaction_date() + "");

        //    description
        TextView descriptionView = (TextView) itemView.findViewById(R.id.transactionDesciptionView);
        descriptionView.setText(currentTransaction.getDescription());

        return itemView;
    }
}

我希望有人能幫助我,因為我找不到任何有用的東西。 如果您需要更多信息,請告訴我......

我假設您的myTransactions列表是在父類AppCompatActivity中定義的。 問題在於

addDepositButton.setOnClickListener(
        new View.OnClickListener()
        {
            public void onClick(View view)
            {

            }
        });

似乎是myTransactions沒有被定義為最終變量。

當你創建一個新的匿名OnClickListener,什么編譯器所做的就是提供OnClickListener構造您myTransactions一個參考,如果myTransactionsOnClick方法內部使用。 這個myTransactions以后不能更改,因此必須是最終的。

因此,對於解決方案,我會嘗試在myTransactions的定義中添加final關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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