2016-12-21 7 views
1

問題があります。私main activityArrayList別のクラスのarraylistにオブジェクトを追加します。

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

:私はこの1つであるTransactions名前付きオブジェクトを追加します。 それほど問題はありません。しかし、私は必要な変数(私の場合はvalue、transaction_dateおよびdescription)を設定したい別のアクティビティからこれをどうやって行うことができますか?私は役に立つ何かを見つけることができませんでしたので、誰かがこれで私を助けてくださいことを願って

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

: は、ここで私は値(はい、私は何の変数の入力がまだ存在しないことを知っている)を設定したい私の活動です。詳細情報が必要な場合は教えてください...

答えて

0

myTransactionsリストは親クラスAppCompatActivity内で定義されています。

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

      } 
     }); 

で問題がmyTransactionsが最終的変数として定義されていないことのようです。

あなたが作成

新しい匿名 OnClickListener、どのようなコンパイラはないです myTransactionsのonClickメソッド内で使用されている場合、それは、あなたの myTransactionsOnClickListenerコンストラクタ参照に提供します。この myTransactionsは後で変更することができず、したがって最終的なものでなければなりません。

ので解決のために、私はmyTransactionsの定義に最終キーワードを追加しようとするだろう。

+0

私のArrayListは、私のMainActivityに配置されているため、AddMoneyTransactionクラスには配置されていないため、これを行うことはできません。 MainActivityにオブジェクトを追加するだけです。 –

+0

次に、別の変数myTransactions2を作成し、finalとmyTransactionsと等しい値をマークします。その後、それを使用します。ハック。 –

関連する問題