2016-12-21 5 views
1

Ich habe ein Problem. Ich möchte ein Objekt hinzufügen namens Transactions die dieses ist:Objekt zu Arraylist aus einer anderen Klasse hinzufügen

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

zu einem ArrayList in meinem main activity. Okay, soweit nicht so ein Problem. Aber wie kann ich das von einer anderen Aktivität aus machen, wo ich die benötigten Variablen einstellen möchte (in meinem Fall den Wert, transaction_date und die Beschreibung)? Hier ist meine Aktivität, wo ich die Werte einstellen wollen (ja ich weiß, dass es keine variable Eingaben noch):

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

Ich hoffe jemand bitte mir dabei helfen kann, da ich nicht geholfen etwas gefunden hat. Bitte sagen Sie mir, wenn Sie weitere Informationen benötigen ...

Antwort

0

Ich nehme an, dass Ihre myTransactions Liste in der übergeordneten Klasse AppCompatActivity definiert ist. Das Problem in

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

      } 
     }); 

scheint zu sein, dass myTransactions nicht als letzten Variable definiert ist.

Wenn Sie eine neue anonyme OnClickListener schaffen, was der Compiler tut, ist es bietet zu OnClickListener Konstruktor eine Referenz auf Ihre myTransactions, wenn myTransactions innerhalb der Methode onClick verwendet wird. Diese myTransactions kann nicht später geändert werden und muss daher endgültig sein.

Also für die Lösung, würde ich versuchen, final Schlüsselwort in der Definition von myTransactions hinzufügen.

+0

Ich kann dies nicht tun, weil meine ArrayList in meine MainActivity platziert ist, nicht in der AddMoneyTransaction-Klasse. Es ist nur dazu gedacht, Objekte zur MainActivity hinzuzufügen. –

+0

Dann machen Sie eine andere Variable myTransactions2, markieren Sie sie als final und value gleich myTransactions. Dann benutze das. Hacken. –

Verwandte Themen