如何根据我的要求正确填充列表项

时间:2016-12-24 16:27:49

标签: android android-edittext textview

我在想什么,我想知道是否有任何解决方案。

我想制作一个节目,当我要按"添加" button,将创建一个新行,左侧为Edittext,右侧为TextView。每次按下"添加" button,将添加包含EdittextTextview的新行。

我已经阅读了一些教程,但所有人都只说了一个字段并且使用了listview

如何添加两个字段? 我无法弄清楚如何设置每行和每个字段的位置?例如,我希望2个字段的距离为30dp,或者每行的距离为25dp。 另外,为了进行一些计算,我怎么知道每个的id?

任何人都可以向我解释一下,提供一些代码或建议我任何教程吗?

非常感谢!

下面的东西(我在油漆上制作)

enter image description here

... 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();

        }

谢谢!

2 个答案:

答案 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();
        }
    });