我在想什么,我想知道是否有任何解决方案。
我想制作一个节目,当我要按"添加" button
,将创建一个新行,左侧为Edittext
,右侧为TextView
。每次按下"添加" button
,将添加包含Edittext
和Textview
的新行。
我已经阅读了一些教程,但所有人都只说了一个字段并且使用了listview
。
如何添加两个字段? 我无法弄清楚如何设置每行和每个字段的位置?例如,我希望2个字段的距离为30dp,或者每行的距离为25dp。 另外,为了进行一些计算,我怎么知道每个的id?
任何人都可以向我解释一下,提供一些代码或建议我任何教程吗?
非常感谢!
下面的东西(我在油漆上制作)
... UPDATE ...
所以,我做了一些更改,以进一步..我为TextViews和EditTexts制作了两个列表,以便以后更容易检索它们。但是当我第二次按下按钮时它会卡住..在第一次按下,它会创建第一行,但在第二次按下时,它会卡住,甚至不会出现裂缝。我确信,这是一件让我看不到的蠢事......
EditText ed;
List<EditText> allEds = new ArrayList<EditText>();
TextView tv;
List<TextView> allTvs = new ArrayList<TextView>();
for (i = 0; i < counter; i++) {
ed = new EditText(Main_5.this);
allEds.add(ed);
ed.setId(counter);
ed.setLayoutParams(new TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.5f));
linearLayout.addView(ed);
ed.setInputType(InputType.TYPE_CLASS_NUMBER| InputType.TYPE_NUMBER_FLAG_DECIMAL);
tv = new TextView(Main_5.this);
allTvs.add(tv);
tv.setId(counter);
tv.setLayoutParams(new TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.5f));
linearLayout.addView(tv);
mainLinearLayout.addView(linearLayout);
}
另外,你可以给我一点帮助来检索ids吗?我正在尝试获取EditText id并在特定的TextView id上显示...我认为这样的事情开始,但由于错误我无法测试它...而且我想接受它进一步为了把TextView放到EditText上..任何想法??
Double[] doubles = new Double[allEds.size()];
for(i=0;i<allEds.size();i++){
doubles[i] = allEds.get(i).getText().toDouble();
}
谢谢!
答案 0 :(得分:0)
所以我刚刚编写了一个快速程序来帮助解决您的问题。这需要调整以适合您的情况。
activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add Row"/>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_below="@id/button"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
</LinearLayout>
</RelativeLayout>
所以在这里我们添加一个Button来添加你想要的东西和一个LinearLayout来包含它们。
MainActivity.java
public class MainActivity extends Activity {
private LinearLayout mainLinearLayout;
private int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
mainLinearLayout = (LinearLayout) findViewById(R.id.linearLayout);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
LinearLayout linearLayout = new LinearLayout(MainActivity.this);
TableLayout.LayoutParams lp = new TableLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1f);
linearLayout.setLayoutParams(lp);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
EditText editText = new EditText(MainActivity.this);
editText.setId(counter);
editText.setLayoutParams(new TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.5f));
editText.setHint("Edit Text");
TextView textView = new TextView(MainActivity.this);
textView.setId(counter);
textView.setLayoutParams(new TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 0.5f));
textView.setText("TextView");
linearLayout.addView(editText);
linearLayout.addView(textView);
mainLinearLayout.addView(linearLayout);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
那么现在要做的就是点击添加行按钮时,它会创建EditText
的新实例和TextView
的新实例,并将它们添加到水平LinearLayout
然后将该linearlayout添加到XML中创建的父线性映射。
答案 1 :(得分:0)
哦!
我为每个搜索它的人添加了一个清晰的按钮。
Button delete = (Button) findViewById(R.id.delete);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainLinearLayout.removeAllViews();
}
});