Ich benutze eine erweiterbare ListView, ich habe einen einzigen EditText in Every Child Item. list_item.xml:Erhalte ID von EditText in Expandable ListView
<TextView
android:id="@+id/lblListItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="TextView"
android:textColor="#000000"
android:textSize="17dp" />
<EditText
android:id="@+id/marks"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Obtained"
android:inputType="number"
android:maxLines="1"
tools:layout_editor_absoluteX="142dp"
tools:layout_editor_absoluteY="60dp" />
Es gibt eine Taste auf mainActivity ist, wenn die Schaltfläche geklickt wird, Ich möchte durch Benutzereingabe Text von jedem Kinder EditText bekommen, ich versucht:
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView.findViewById(R.id.lblListItem);
edt=(EditText)convertView.findViewById(R.id.marks);
String abc=edt.getText().toString();
Toast.makeText(convertView.getContext(),"This: "+ abc,Toast.LENGTH_SHORT).show();
txtListChild.setText(childText);
return convertView;
}
Aber, Es funktioniert nur, wenn eine Gruppe erweitert wird, (Toast zeigt mir Text, der in EditText bereitwillig vorhanden war) Nicht, wenn Benutzer den Knopf drückt.
So, Wie rufe ich getChildView-Methode in Button klicken?Ich weiß nicht, welche Argumente zu übergeben, wenn Sie es in OnClick() aufrufen. OR
Vielleicht ein Hack wird arbeiten: Wenn Schaltfläche geklickt wird, wird die erweiterte Gruppe zusammen und erweitert, so dass es das tun, was ich will? Vielleicht
Ich möchte Text aller untergeordneten Elemente erhalten. (Vielleicht in einer Schleife) Aber getView() hat keine Schleife, und es funktioniert gut (sonst funktioniert es nur, wenn eine Gruppe erweitert wird) –
Nun, es muss nur eine Taste, Und wie Sie sagen, es ist nicht ein Guter Ansatz, ich denke, der Grund ist: Einige EditTexts sind möglicherweise null? Könnte sein. Dann kann ich den Benutzer einschränken, Button funktioniert nur, wenn alle Felder ausgefüllt sind. Also, bitte sagen Sie mir, wie Sie Referenzen halten und alle Werte auf One ButtonClick übergeben. –
Reihenfolge des Abrufen des Textes sollte so sein, wie sie angezeigt werden. Ich meine, genauso wie Toast im obigen Code zeigt. –