动态创建textview,让它显示一个变量的值

Create textview dynamically and let it show the value of a variable

我要完成的是:
每次我单击一个 Button 时,它都应该创建一个新的 TextView,这个新创建的 TextView 将在我单击该 Button 时显示 EditText 的值。

例如:如果我在 EditText 中写入 "This" 并单击 Button,它应该创建一个显示 "This" 的 TextView。如果我然后在同一个 EditText 中写入 "works" 并按下按钮,它应该创建第二个显示 "works".

的 TextView

让我向您展示我的尝试:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ausgabe);


    Button b = (Button)findViewById(R.id.erstellButton);
    ll = (LinearLayout)findViewById(R.id.LL);
    layoutParams = new LinearLayout.LayoutParams
            (layoutParams.WRAP_CONTENT, layoutParams.WRAP_CONTENT);

    b.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            et = (EditText) findViewById(R.id.editText3);
            TextView view = new TextView(AusgabeActivity.this);
            ll.addView(view, layoutParams);
            String plsJustWork = et.getText().toString();
            view.setText(++i+"test" +plsJustWork);

        }
    });

现在,如果我使用这段代码,每次单击按钮时都会创建一个新的 TextView,但它只显示“1test”,下次单击按钮时它会显示“2test”。所以EditText(editText3/et)的值没有显示出来。

试试这个

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {
    Button b;
    int i = 0;
    EditText et;
    LinearLayout ll;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et = (EditText) findViewById(R.id.editText3);
        b = (Button) findViewById(R.id.erstellButton);
        ll = (LinearLayout) findViewById(R.id.LL);

        final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams
                (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {


                String plsJustWork = et.getText().toString();

                if (TextUtils.isEmpty(plsJustWork)) {
                    et.setError("Please Enter Value");
                    et.requestFocus();
                } else {
                    TextView view = new TextView(MainActivity.this);
                    ll.addView(view, layoutParams);

                    view.setText(++i + " test " + plsJustWork);
                    et.setText("");
                }


            }
        });
    }
}

使用下面的代码..

public class Demo extends AppCompatActivity {
LinearLayout ll;
LinearLayout.LayoutParams layoutParams;
EditText et;
int i = 0;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo);
    Button b = (Button) findViewById(R.id.daBtnSubmit);

    ll = (LinearLayout) findViewById(R.id.demo);
    layoutParams = new LinearLayout.LayoutParams
            (layoutParams.WRAP_CONTENT, layoutParams.WRAP_CONTENT);
    et = findViewById(R.id.daEtData);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
       if (!TextUtils.isEmpty(et.getText().toString().trim())) {
                TextView view = new TextView(Demo.this);
                ll.addView(view, layoutParams);
                view.setText(++i + "  test " + et.getText().toString().trim()); // if not create every time then remove i value.
                et.setText("");
                et.setError(null);
            } else {
                et.setError("Please Enter text");
            }
            }
    });
}

}

您可以使用 listView 或 recylerview 来实现相同的目的。这是执行此操作的代码

public class MainActivity extends BaseActivity {
    ArrayList<String> arrayList;
    EditText etEditText;
    Button btButton;
    ListView lvListView;
    ArrayAdapter<String> adapter;

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initUI();
        setAdapter();
        setClickListener();


    }

    private void setClickListener() {
        btButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (!etEditText.getText().toString().isEmpty()) {
                    arrayList.add(etEditText.getText().toString());
                    if (adapter != null)
                        adapter.notifyDataSetChanged();

                }
            }
        });
    }

    private void initUI() {
        etEditText = findViewById(R.id.etEditText);
        btButton = findViewById(R.id.btButton);
        lvListView = findViewById(R.id.lvListView);

    }

    private void setAdapter() {
        arrayList = new ArrayList<>();
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, android.R.id.text1, arrayList);
        lvListView.setAdapter(adapter);

    }


}

添加 activity_main 是

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/etEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ClickMe"
        app:layout_constraintTop_toBottomOf="@+id/etEditText" />

    <ListView
        android:id="@+id/lvListView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/btButton" />


</android.support.constraint.ConstraintLayout>