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;
}
谢谢。
我有一个 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;
}
谢谢。