我想创建一个能够生成统计处理结果的Android应用程序
图像中的图1将是用户在我的应用程序中看到的初始表;它只包含一行有三列,然后如果用户单击“添加”按钮,它将在表中添加另一行,其中包含三列。每次用户将数据添加到表中时,它会自动计算数据的百分比,就像图2中的示例一样。 我希望你明白我想做什么。 我真的需要制作这种应用程序,我希望你能帮助我,因为我真的不知道创建一个自动计算数据的动态表的逻辑。 我将非常感谢你的帮助。
答案 0 :(得分:0)
好的,所以我认为你想要做的是:
首先添加空行:
private void AddRow(){
TableLayout tl = (TableLayout) findViewById(R.id.somelayout);
TableRow row= new TableRow(this);
TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
row.setLayoutParams(lp);
EditText fruit = new EditText(this);
EditText freq = new EditText(this);
EditText perc = new EditText(this);
freq.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
ReCalculate();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
row.addView(fruit);
row.addView(freq);
row.addView(perc);
tl.addView(row,i);
}
private void ReCalculate(){
float sum = 0f;
int rows = tl.getChildCount();
// Get the total
for (int i = 0; i < rows; i++) {
TableRow elem = (TableRow) tl.getChildAt(i);
sum+= Integer.parseInt(((EditText)elem.getChildAt(1)).getText().toString());
}
// Recalculate every row percent
for (int i = 0; i < rows; i++) {
TableRow elem = (TableRow) tl.getChildAt(i);
int amount = Integer.parseInt(((EditText)elem.getChildAt(1)).getText().toString());
((EditText)elem.getChildAt(1)).setText(String.valueOf(amount/sum*100));
}
}
<强>编辑:强> 该按钮不是动态创建的,因此您不需要为它或OnClickListener调用row.addView()。按钮的OnClickListener将只调用AddRow()
这可能有一些错误,你需要检查空文本,但只想给你一个例子。希望它有所帮助