我是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);
}
谢谢和最诚挚的问候,
答案 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)
通过循环创建文本视图。这是一个更好的方法。