java - 从另一个类将对象添加到数组列表

标签 java android object arraylist

我遇到了问题。我想添加一个名为 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;
}

到我的主要 Activity 中的ArrayList。 好吧,到目前为止还没有那么大的问题。但是,我如何从另一个我想要设置所需变量(在我的例子中是值、transaction_date 和描述)的 Activity 中执行此操作? 这是我想要设置值的 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 关键字。

关于java - 从另一个类将对象添加到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268608/

相关文章:

java - 从 Eclipse Kepler 运行 Maven 命令给出异常

java - Tomcat 8 升级后的 JNDI NameNotFoundException

database - 我可以在/sdcard 上下载 SQLite db 并从我的 Android 应用程序访问它吗?

Android PopupWindow 不关闭

Java 我想我的问题是如何重用一个对象来将 2 条记录添加到我的数据库程序中

java - 在 Android 中,我可以在没有 Intent 的情况下在 Activity 之间移动对象吗?

java - Shutdownhook - 日志未在控制台/文件 @Predestroy 方法中打印

java - 如何使用 Java 获取外部进程的内存和 CPU 使用情况?

android - 如何在 CubicLineChart 上绘制垂直线?

php - mysqli 对象如何获取字段