我正在创建一个有问题的Android应用,用户可以通过选择提供的两个选项来回答它们。他们还可以选择动态添加更多选项(最多三个)。我正在将帖子提交到数据库中。
public void sendPost(View v){
String titlePost = etTitlePost.getText().toString().trim();
String textPost = etTextPost.getText().toString().trim();
String option1 = etOption1.getText().toString().trim();
String option2 = etOption2.getText().toString().trim();
String option3 = null, option4 = null, option5 = null;
if(findViewById(R.id.etOption3)!=null){
EditText etOption3 = (EditText)findViewById(R.id.etOption3);
option3 = etOption3.getText().toString().trim();
}
if(findViewById(R.id.etOption4)!=null){
EditText etOption4 = (EditText)findViewById(R.id.etOption4);
option4 = etOption4.getText().toString().trim();
}
if(findViewById(R.id.etOption5)!=null){
EditText etOption5 = (EditText)findViewById(R.id.etOption5);
option5 = etOption5.getText().toString().trim();
}
if(!titlePost.isEmpty() && !textPost.isEmpty() && !option1.isEmpty() && !option2.isEmpty()){
if( option3 !=null && !option3.isEmpty()){
if( option4 !=null && !option4.isEmpty()){
if( option5 !=null && !option5.isEmpty()){
submitPost(titlePost, textPost, option1, option2, option3, option4, option5);
}
else{
submitPost(titlePost, textPost, option1, option2, option3, option4);
}
}
else {
submitPost(titlePost, textPost, option1, option2, option3);
}
}
else {
submitPost(titlePost, textPost, option1, option2);
}
}
else{
Toast.makeText(this, "Please fill everything!", Toast.LENGTH_SHORT).show();
}
}
我可以这样做,因为选项的数量有限。如果在编译时没有知道选项的总数,那么best and most efficient
可能的方法来完成这项任务会是什么?
另外,我正在动态添加EditTexts,如下所示。
int o=3;
l = (LinearLayout) findViewById(R.id.layout1);
public void addOption(View v){
params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
if(o<6){
etNewOption = new EditText(this);
etNewOption.setId(o);
l.addView(etNewOption, o+1, params);
}
如何将ID设置为某些字符串?
答案 0 :(得分:-1)
我会创建一个名为View
的类,然后创建另一个名为Controller
的类。
在main方法中,循环遍历循环,创建视图并将其添加到控制器。
当您离开循环时,您可以访问所需的视图:
controller.getViewByName("Option3");
这将是您的控制器中的一个方法,它将查找具有该标识符的视图。
Controller c = new Controller();
for (i = 0; i < amountOfViews; i++)
{
//some work
View v = New View(...);
c.add(v);
}
您需要在控制器中创建自己的自定义方法并分配其ID和创建方法,以便您可以通过id获取所需的视图。存储结构的HashMap
将是理想的,我相信在这种情况下。
这会回答你的问题吗?
编辑:这是一个简单的例子,但不是做一个for循环。因为你不知道你有多少观点。
我会使用一个无限的while循环来获取一个视图,当它返回null时你会跳出while循环并且你的ArrayList或HashMap或Custom Structure填充了视图。