我有一个自定义的edittext,就像一个表单。它有标签,编辑文本和按钮。我正在使用标签将其包含在布局中,以便我可以反复使用该表单。我希望按钮具有的功能是在单击时重现表单。首次点击第一张表格时,我可以这样做。但是,当我单击新表单的按钮时,没有任何操作。但是,如果单击第一个表单按钮,则会创建一个新表单。这是我的xml:我包括。
<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/form_textview"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="14sp" android:text="Number:" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:id="@+id/form_edittext"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" />
<ImageButton android:id="@+id/form_button"
android:layout_width="wrap_content" android:layout_height="match_parent"
android:src="@drawable/ic_menu_example" android:paddingLeft="1dp"
android:paddingRight="1dp" />
</LinearLayout>
这就是我尝试动态添加新表单的方式:
public final void onClick(final View view)
{
if (view == findViewById(R.id.form_button))
{
try{
LinearLayout layout = (LinearLayout) findViewById(R.id.contacteditll);
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View tempView = vi.inflate(R.layout.form, null);
numberEntryViews.add(tempView);
layout.addView(tempView);
ImageButton btn = (ImageButton) tempView.findViewById(R.id.form_button);
btn.setOnClickListener(this);
}
catch (Exception e)
{
e.printStackTrace();
Log.d(TAG, "Failed to inflate");
}
}
}
我已尝试过各种方法来实现这一点,但我没有运气。任何帮助或建议都会非常感谢。
答案 0 :(得分:1)
如果单击新创建的按钮
,则此行不会为真 if (view == findViewById(R.id.form_button))
您可以为新创建的按钮分配固定ID,或尝试使用偏移
答案 1 :(得分:0)
我想我必须制作一个班级按钮并查看以从新表格更新按钮的功能。
try{
LinearLayout layout = (LinearLayout) findViewById(R.id.contacteditll);
LinearLayout layout2 = (LinearLayout) layout.findViewById(R.id.numbersll);
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
tempView = vi.inflate(R.layout.form, null);
numberEntryViews.add(tempView);
layout2.addView(tempView);
btn = (ImageButton) tempView.findViewById(R.id.form_button);
//TODO: Work from here. Ask on Stack Overflow.
btn.setOnClickListener(this);
}
catch (Exception e)
{
e.printStackTrace();
Log.d(TAG, "Failed to inflate");
}
btn是班级,每次点击都会更新。从我的情况下删除最后一个按钮的功能。