gettext() returns 在 ExpandableListViewAdapter 中为空

gettext() returns empty in ExpandableListViewAdapter

我有一个 ExpandableListViewAdapter,当您单击列表中的按钮时,您可以在其中向列表中添加一个项目。但我无法获取此文本,因为 gettext() 始终 returns 为空。当我 运行 应用程序时,为新项目创建了一个新字段,但它什么也没说。这是适配器中的代码,所有的事情都发生在这里。

@Override
    public View getChildView(final int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup viewGroup) {
        final TextView txtview = new TextView(context);
        edittxt = new EditText(context);
        final Button btn = new Button(context);

        if (children.get(groupPosition).get(childPosition).equals("new")) {
            edittxt.setText("Crear nuevo", TextView.BufferType.EDITABLE);
            edittxt.setPadding(100,0,0,0);
            edittxt.setBackgroundColor(Color.GRAY);
            edittxt.setTextSize(20);
            //edittxt.setHint("Crear Nuevo");


            return edittxt;
        }

        if (children.get(groupPosition).get(childPosition).equals("agregar")) {
            btn.setText("Agregar");
            btn.setPadding(100,0,0,0);
            btn.setBackgroundColor(Color.DKGRAY);
            btn.setTextSize(20);
           
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    final String nombreIngresado = edittxt.getText().toString();
                    //Log.v("que hay en el edittxt", edittxt.getText().toString());
                    children.get(groupPosition).add(0,nombreIngresado);
                    notifyDataSetChanged();
                }
            });
            return btn;

        }
        else {
        txtview.setText(children.get(groupPosition).get(childPosition));
        txtview.setPadding(100,0,0,0);
        txtview.setTextColor(Color.RED);
        txtview.setTextSize(20);

        txtview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(context, txtview.getText().toString(), Toast.LENGTH_SHORT).show();
            }
        });
        return txtview;}
    }

谢谢安吉

解决了 :)

我把这行:"edittxt = new EditText(context);" 放在 de first if-block 里面。旧代码会创建大量 EditText,甚至在不需要时也是如此。 现在看起来像这样:

@Override
public View getChildView(final int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup viewGroup) {
    final TextView txtview = new TextView(context);
    edittxt = new EditText(context);
    final Button btn = new Button(context);

    if (children.get(groupPosition).get(childPosition).equals("new")) {
        edittxt.setText("Crear nuevo", TextView.BufferType.EDITABLE);
        edittxt.setPadding(100,0,0,0);
        edittxt.setBackgroundColor(Color.GRAY);
        edittxt.setTextSize(20);
        //edittxt.setHint("Crear Nuevo");


        return edittxt;
    }

谢谢。