2017-04-21 96 views
0

我真的很陌生,我一直在閱讀stackeroverflow,我們需要從另一個類更新TableLayout時傳遞上下文。但我不想直接從另一個類更新TableLayout;我試圖通過調用MainActivity中的方法來更新它。而這種方法有所有的更新代碼。從另一個類更新TableLayout

以下是我有:

public class MainActivity extends Activity { 

public void addTableRow(String company, Integer shares, float p, float f) { 

    TableLayout tl = (TableLayout) findViewById(R.id.tablelayout); 
    TableRow tr = new TableRow(this); 

    //does a bunch of stuff here 
    //then does some formatting 

    companyName.setText(company); 
    companyShares.setText(shares.toString()); 
    dailyChange.setText(String.format("%.2f", p)); 
    dailyChangeToPortfolio.setText(String.format("%.2f", f)); 

    tr.addView(companyName); 
    tr.addView(companyShares); 
    tr.addView(dailyChange); 
    tr.addView(dailyChangeToPortfolio); 

    tl.addView(tr); 
} 

}

在我的其他類我有

public class UpdateStock { 

    public void startUpdate(){ 
     MainActivity m = new MainActivity(); 
     m.addTableRow("CSCO", 10, 5.555f, 6.666f); 
    } 
} 

但它在我的錯誤。任何建議,以使其發揮作用將是偉大的。

回答

0

您可以使用意向將數據傳遞到一個新的活動:

public static class MyRowData implements Serializable { 

    String company; 
    Integer shares; 
    float p; 
    float f; 

    public MyRowData(String company, Integer shares, float p, float f) { 
     this.company = company; 
     this.shares = shares; 
     this.p = p; 
     this.f = f; 
    } 
} 

public class UpdateStock { 

    public void startUpdate(){ 
     MyRowData rowData = new MyRowData("CSCO", 10, 5.555f, 6.666f); 
     Intent intent = new Intent(getActivity(), MainActivity.class); 
     intent.putExtra("MY_DATA", rowData); 
     startActivity(intent); 
    } 
} 

public class MyActivity extends Activity { 

    MyRowData getRowData() 
    { 
     return (MyRowData)getIntent().getSerializableExtra("MY_DATA"); 
    } 
} 
+0

你的建議是,在我的理解方式。是否有另一種方法通過傳遞上下文來實現此目的? – user7655804

+0

我不確定你的兩個班級之間有什麼關係。誰創建'updateStock'(你應該真的把它重命名爲UpdateStock),它和'MainActivity'之間的關係是什麼?您始終可以使用靜態數組來保存您的數據。 –

+0

數據的傳遞不是我不認爲的問題。在UpdateStock類中,當我調用startUpdate()時,它應該調用MainActivity中的addTableRow()。 MainActivity擁有所有更新代碼來更新表格。 – user7655804