使用Java在Android中添加20个textViews

时间:2016-12-05 21:09:13

标签: java android loops for-loop

我是Android编程的新手,目前正在尝试理解在其中实现简单的Java。 我想要做的是了解如何在Android studio中添加20个textViews。我的意思是,这里最好的选择是什么。 是吗:

a)手动添加20个textViews,当我点击按钮A时,所有textViews都将使用公式进行更新。我相信这会产生不必要的java代码和重复。

b)创建一个for循环,添加一个textView,然后通过方法自动更新。到目前为止我做了什么。下面的代码(想象一下,有一个按钮连接到MainCalculate ID:

double realPrice = 10;
double total = (realPrice * 2)+1;
double increase = 0.1;
TextView percentageTextView = (TextView) findViewById(R.id.percentageTextViewID);


public void MainCalculate (View view) {

    MarketValueAnswer.setText(Double.toString(marketValueAnswer));

    for (double i=realPrice; i<=total; i+=increase) {

        double formula = ((realPrice*increase) + realPrice);
        increase+=0.05;
        percentageTextView.append("\n" + formula);

    }

谢谢和最诚挚的问候,

3 个答案:

答案 0 :(得分:1)

如果你真的想添加20个TextView,你可以这样做。 单击按钮时会调用函数calculation()。

double realPrice = 10;
double total = (realPrice * 2)+1;
double increase = 0.1;

private void calculation() {

    for (double i=realPrice; i<=total; i+=increase) {

        double formula = ((realPrice*increase) + realPrice);
        increase+=0.05;
        try {
            TextView txtView = new TextView(this);
            txtView.setText(Double.toString(formula));
            ll.addView(txtView);
        } catch (Exception ignored) {}
    }
}

这将真正添加20个TextView,它可能需要一点点,具体取决于您的设备硬件(更好地为此实现AsynchTask)。 我是否正确理解了您的问题?

答案 1 :(得分:1)

这是使用AsynchTask的更好方法。这样可以防止您的应用冻结。

calculation myCalc = new calculation(this);
myCalc.execute();

这是AsyncTask类

private class calculation extends AsyncTask<Void, Double, Void> {
        //we need this context for the TextView instantiation

    private Context mContext;

    private calculation(Context context){
        mContext = context;
    }

    @Override
    protected Void doInBackground(Void... voids) {
        for (double i=realPrice; i<=total; i+=increase) {
            double formula = ((realPrice*increase) + realPrice);
            increase+=0.05;
            publishProgress(formula);
        }
        return null;
    }

    protected void onProgressUpdate(Double... s) {
        try {
            TextView txtView = new TextView(mContext);
            txtView.setText(Double.toString(s[0]));
            ll.addView(txtView);
        } catch (Exception ignored) {}
    }
}

最佳解决方案使用带有LineraLayout的ScrollView

<ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/rootLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" />
    </ScrollView>

答案 2 :(得分:0)

通过循环创建文本视图。这是一个更好的方法。