我是一个新的Android开发人员,我决定创建一个简单的测试应用程序,它有6个editViews并计算输入的数字的平均值。
我希望找到如何在需要时以编程方式创建视图,而不是浪费资源来获得OnCreate的所有视图。
我一直在寻找,但一直无法找到如何实现它。如果有人可以提供帮助那就太棒了。
谢谢!
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
average = (TextView)findViewById(R.id.average);
edit_message = (EditText)findViewById(R.id.edit_message);
editText = (EditText)findViewById(R.id.editText);
editText2 = (EditText)findViewById(R.id.editText2);
editText3 = (EditText)findViewById(R.id.editText3);
editText4 = (EditText)findViewById(R.id.editText4);
editText5 = (EditText)findViewById(R.id.editText5);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
s1 = edit_message.getText().toString();
s2 = editText.getText().toString();
s3 = editText2.getText().toString();
s4 = editText3.getText().toString();
s5 = editText4.getText().toString();
s6 = editText5.getText().toString();
if(!s1.isEmpty()) {
n1 = Integer.parseInt(s1);
counter++;
}
if(!s2.isEmpty()) {
n2 = Integer.parseInt(s2);
counter++;
}
if(!s3.isEmpty()) {
n3 = Integer.parseInt(s3);
counter++;
}
if(!s4.isEmpty()) {
n4 = Integer.parseInt(s4);
counter++;
}
if(!s5.isEmpty()) {
n5 = Integer.parseInt(s5);
counter++;
}
if(!s6.isEmpty()) {
n6 = Integer.parseInt(s6);
counter++;
}
if(counter>0) {
s1 = String.valueOf((n1 + n2 + n3 + n4 + n5 + n6) / counter);
average.setText(s1);
}
else {
average.setText("0");
}
counter = 0;
}
});
}
答案 0 :(得分:0)
如果没有更多细节,我至少会给你一个开始的地方。您可以以编程方式实例化TextView
,然后将它们添加到您的布局中。
TextView tv = new TextView(context);
parent.addView(tv);
context
应该是您的Activity
或Fragment
,此文本视图将与您分开。 parent
应该是XML布局中的ViewGroup
,可以有多个子项,例如纵向LinearLayout
。希望这足以引导您更好地进行Google搜索。
修改强>
LinearLayout
- 不是列表布局,脑屁。
答案 1 :(得分:0)
这是一个仅供参考的样本:
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.test.MainActivity" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
<Button
android:id="@+id/add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="add" />
<Button
android:id="@+id/del"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="del" />
<Button
android:id="@+id/sum"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="sum" />
</LinearLayout>
这是活动: package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
LinearLayout container;
Button add;
Button del;
Button sum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
container = (LinearLayout) findViewById(R.id.container);
add = (Button) findViewById(R.id.add);
del = (Button) findViewById(R.id.del);
sum = (Button) findViewById(R.id.sum);
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText edit = new EditText(MainActivity.this);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
edit.setLayoutParams(params);
edit.setInputType(InputType.TYPE_CLASS_NUMBER);
container.addView(edit);
}
});
del.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int count = container.getChildCount();
if (count > 0)
container.removeViewAt(count - 1);
}
});
sum.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int count = container.getChildCount();
int sum = 0;
for (int i = 0; i < count; i++) {
EditText edit = (EditText) container.getChildAt(i);
String numStr = edit.getText().toString();
if (numStr == null || !(numStr.length() > 0)) {
sum += 0;
} else {
sum += Integer.parseInt(numStr);
}
}
Log.i("Test", "sum = " + sum + " avg = " + (sum * 1.0f / count));
}
});
}
}