我在android中同时添加了一个静态和动态文本视图。但是代码中有一些错误..它只是添加了数组的最后一个元素。可以帮我解决一下吗?
dynamicInput = (String[]) data;
runOnUiThread(new Runnable() {
public void run() {
String[] string = { "Customer Mobile No :", "Nick Name :",
"Amount :", "Due date :" };
LinearLayout findViewById = (LinearLayout) findViewById(R.id.dynamicInputbiller);
TextView dynamicText = new TextView(PayBiller_Activity.this);
TextView staticText = new TextView(PayBiller_Activity.this);
for (int i = 0; i < string.length; i++) {
staticText.setText(string[i]);
staticText.setTextColor(Color.BLACK);
staticText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 17);
dynamicText.setText(dynamicInput[i]);
dynamicText.setTextColor(Color.GRAY);
dynamicText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
}
findViewById.addView(staticText);
findViewById.addView(dynamicText);
}
});
答案 0 :(得分:0)
试试这个:
dynamicInput = (String[]) data;
runOnUiThread(new Runnable() {
public void run() {
String[] string = { "Customer Mobile No :", "Nick Name :",
"Amount :", "Due date :" };
LinearLayout findViewById = (LinearLayout) findViewById(R.id.dynamicInputbiller);
for (int i = 0; i < string.length; i++) {
TextView dynamicText = new TextView(PayBiller_Activity.this);
TextView staticText = new TextView(PayBiller_Activity.this);
staticText.setText(string[i]);
staticText.setTextColor(Color.BLACK);
staticText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 17);
dynamicText.setText(dynamicInput[i]);
dynamicText.setTextColor(Color.GRAY);
dynamicText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
findViewById.addView(staticText);
findViewById.addView(dynamicText);
}
}
});
答案 1 :(得分:0)
把它放在你的for循环中。
findViewById.addView(staticText);
findViewById.addView(dynamicText);
答案 2 :(得分:0)
如果要将所有数组元素设置为textViews,则必须在每次迭代时附加它。现在你没有这样做。因此,您只获得最后一个数组元素。
注意:还要确保您的字符串Array dynamicInput和staticText的字符串数组具有相同数量的元素,这样您就不会将索引排除在绑定异常之外,或者在将其分配给TextView时可能会遗漏某些元素。
我给你的“字符串”数组提供了一些其他名称。它的“staticStringArray。”
dynamicInput = (String[]) data;
runOnUiThread(new Runnable() {
public void run() {
String[] staticStringArray= { "Customer Mobile No :", "Nick Name :","Amount :", "Due date :" };
LinearLayout findViewById = (LinearLayout) findViewById(R.id.dynamicInputbiller);
TextView dynamicText = new TextView(PayBiller_Activity.this);
TextView staticText = new TextView(PayBiller_Activity.this);
for (int i = 0; i < staticStringArray.length; i++) {
//append each element of the array on each iteration.
staticText.setText(staticText.getText().toString() + staticStringArray[i] + "\n");
staticText.setTextColor(Color.BLACK);
staticText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 17);
//append each element of the array on each iteration.
dynamicText.setText(dynamicText.getText().toString() + dynamicInput[i] + "\n");
dynamicText.setTextColor(Color.GRAY);
dynamicText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
}
findViewById.addView(staticText);
findViewById.addView(dynamicText);
}
});
答案 3 :(得分:0)
实际上问题是不同的。你正在做的是你在一个TextView中添加一个数组的元素。当你在循环中执行它时,它只接受最后一个元素并在Text视图中获取它。做一件事就是采用父布局的ID(线性/相对)。
在循环中
创建一个Textview并为其添加一个值(你的方式就像setText,setTextSize等)。在循环中将其添加到其父布局。
这可能会对你有帮助。