问题描述
如何在适配器中动态添加edittext?
我有一个适配器,可以从中创建编辑文本,以便用户动态输入数据。
我正在将Json从服务器收到的所有创建的编辑文本存储在列表中。 现在,我什至必须为用户提供额外的编辑文本,以便在单击按钮时添加动态/自定义数据?我该怎么做?
ArrayList<EditText> list = new ArrayList<>();
list.add(holder.editText);
我首先将使用如下所示的警告框从用户那里获得编辑文本的标题/提示:
addField.setonClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context,R.style.AlertDialogStyle);
alertDialog.setMessage("");
final EditText input = new EditText(context);
input.setGravity(Gravity.CENTER);
input.setHint("Enter Title for custom field");
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
input.setLayoutParams(lp);
alertDialog.setView(input);
alertDialog.setIcon(R.drawable.logo);
alertDialog.setPositiveButton("Set",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int which)
{
list.add(holder.editText); //**App Crashes while doing this**
}
});
alertDialog.setCancelable(false).show();
}
});
未将编辑文本添加到列表中,并且在单击alertBox的SET时应用程序崩溃了
解决方法
我认为您必须至少提供一个editText来聚焦XML。然后在Java中,您可以创建editTexts并以编程方式添加params等。此源代码对我有用:
EditText editText = new EditText(context);
editText.setLayoutParams(layoutParamsForEdittext);
editText.setBackground(context.getResources().getDrawable(R.drawable.bg_rounded_grey_border));
editText.setId(surveyAnswers.getId());
editText.setPadding(8,8,8);
editText.setScrollContainer(true);
editText.setTextSize(16);
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
editText.setFilters(new InputFilter[]{filter,new InputFilter.LengthFilter(10)});
editText.setGravity(Gravity.TOP);
editText.setHintTextColor(context.getResources().getColor(R.color.colorTextHint));
editText.setHint(surveyAnswers.getText());
linearLayoutShelfShareAnswer.addView(editText);