【问题标题】:add object to arraylist from another class从另一个类将对象添加到arraylist
【发布时间】:2017-05-07 05:18:29
【问题描述】:

我遇到了问题。我想添加一个名为 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 activity 中的ArrayList。 好吧,问题不大。但是如何从另一个我想设置所需变量(在我的情况下为值、transaction_date 和描述)的活动中做到这一点? 这是我要设置值的活动(是的,我知道还没有变量输入):

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;
    }
}

我希望有人可以帮我解决这个问题,因为我没有找到任何有用的东西。如果您需要更多信息,请告诉我...

【问题讨论】:

    标签: java android object arraylist


    【解决方案1】:

    我假设您的 myTransactions 列表是在父类 AppCompatActivity 中定义的。

    中的问题
    addDepositButton.setOnClickListener(
            new View.OnClickListener()
            {
                public void onClick(View view)
                {
    
                }
            });
    

    似乎是 myTransactions 没有定义为最终变量。

    当您创建一个新的匿名 OnClickListener 时,编译器所做的是向 OnClickListener 构造函数提供对您的 myTransactions 的引用,如果 myTransactions em>myTransactions 在 onClick 方法中使用。这个 myTransactions 以后不能更改,因此必须是最终的。

    所以对于解决方案,我会尝试在 myTransactions 的定义中添加 final 关键字。

    【讨论】:

    • 我不能这样做,因为我的 ArrayList 放在我的 MainActivity 中,而不是在 AddMoneyTransaction 类中。它只是为了将对象添加到 MainActivity。
    • 然后创建另一个变量myTransactions2,将其标记为final,值等于myTransactions。然后使用它。破解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2017-12-20
    • 2017-05-27
    • 2021-12-10
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多