Android: getChild () EditText valores en el botón de clic en ExpandableListView

Estoy desarrollando Expandablelistview en Android.

En GroupView sólo tiene un título y cada grupo tiene ChildView diferente.

Este código funciona bien y puedo ver diferentes ChildView en cada elemento del grupo.

En ChildView tengo un EditText y cuando hago clic en el botón done quiero obtener todos los valores de EditText y Spinner que son entradas por el usuario.

Cuando hago clic en el botón hecho en ese momento, quiero obtener los detalles que se llena por el usuario en los elementos del grupo Location Customer etc

Por ejemplo: la imagen mostrada en cuestión. Quiero conseguir los detalles de la entrada que es llenado por el usuario en el vehicle y el artículo del grupo de la TEST .

Por favor, necesito ayuda, quiero obtener valores que se llenan por el usuario en cada elemento de grupo EditText del niño.

Aquí está mi código:

MainActivity.java

 public class MainActivity extends Activity { Context mContext; private ExpandableListView mExpandableListView; CustomAdapter mCustomAdapter; ArrayList<String> newCalibration = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mContext = MainActivity.this; newCalibration.add("CUSTOMER"); newCalibration.add("LOCATION"); newCalibration.add("VEHICLE"); newCalibration.add("TEST"); newCalibration.add("ABC"); /* genarate data for list view */ // genarateData(); /* instantiate adapter with our item list */ mCustomAdapter = new CustomAdapter(mContext, newCalibration); /* we get list view */ mExpandableListView = (ExpandableListView) findViewById(R.id.explist_tools); /* set adapter to list view */ mExpandableListView.setAdapter(mCustomAdapter); mExpandableListView .setOnGroupExpandListener(new OnGroupExpandListener() { int previousGroup = -1; @Override public void onGroupExpand(int groupPosition) { // TODO Auto-generated method stub if (groupPosition != previousGroup) { mExpandableListView.collapseGroup(previousGroup); previousGroup = groupPosition; } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

CustomAdapter.java

 public class CustomAdapter extends BaseExpandableListAdapter { private LayoutInflater layoutInflater; /* list of parent */ private ArrayList<String> mParents; public CustomAdapter(Context context, ArrayList<String> parents) { super(); this.mParents = parents; layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public Object getChild(int parentPosition, int childPosition) { return null; } @Override public long getChildId(int parentPosition, int childPosition) { // TODO Auto-generated method stub return childPosition; } @Override public View getChildView(int parentPosition, int childPosition, boolean b, View convertView, ViewGroup viewGroup) { if (convertView == null) { convertView = layoutInflater .inflate(R.layout.list_item_child, null); } EditText mEdTxt_1 = (EditText) convertView.findViewById(R.id.edtxt_1); EditText mEdTxt_2 = (EditText) convertView.findViewById(R.id.edtxt_2); EditText mEdTxt_3 = (EditText) convertView.findViewById(R.id.edtxt_3); EditText mEdTxt_4 = (EditText) convertView.findViewById(R.id.edtxt_4); EditText mEdTxt_5 = (EditText) convertView.findViewById(R.id.edtxt_5); RelativeLayout relativeLayout = (RelativeLayout) convertView .findViewById(R.id.relativeLayout); mEdTxt_1.setVisibility(View.VISIBLE); mEdTxt_2.setVisibility(View.VISIBLE); mEdTxt_3.setVisibility(View.VISIBLE); mEdTxt_4.setVisibility(View.VISIBLE); mEdTxt_5.setVisibility(View.VISIBLE); relativeLayout.setVisibility(View.VISIBLE); if (mParents.get(parentPosition).equals("CUSTOMER")) { mEdTxt_4.setVisibility(View.GONE); mEdTxt_5.setVisibility(View.GONE); relativeLayout.setVisibility(View.GONE); } else if (mParents.get(parentPosition).equals("LOCATION")) { mEdTxt_4.setVisibility(View.GONE); mEdTxt_5.setVisibility(View.GONE); relativeLayout.setVisibility(View.GONE); } else if (mParents.get(parentPosition).equals("VEHICLE")) { relativeLayout.setVisibility(View.GONE); } else if (mParents.get(parentPosition).equals("TAXIMETER/BCT")) { mEdTxt_3.setVisibility(View.GONE); mEdTxt_4.setVisibility(View.GONE); mEdTxt_5.setVisibility(View.GONE); } else if (mParents.get(parentPosition).equals("TIRE SPECS")) { mEdTxt_4.setVisibility(View.GONE); mEdTxt_5.setVisibility(View.GONE); relativeLayout.setVisibility(View.GONE); } return convertView; } @Override public int getChildrenCount(int parentPosition) { return 1; } @Override public Object getGroup(int parentPosition) { // TODO Auto-generated method stub return mParents.get(parentPosition); } @Override public int getGroupCount() { // TODO Auto-generated method stub return mParents.size(); } @Override public long getGroupId(int parentPosition) { // TODO Auto-generated method stub return parentPosition; } @Override public View getGroupView(int parentPosition, boolean isExpanded, View convertView, ViewGroup viewGroup) { TextView groupName = null; String parent = (String) getGroup(parentPosition); if (convertView == null) { convertView = layoutInflater.inflate(R.layout.list_item_parent, null); } groupName = (TextView) convertView.findViewById(R.id.txt_parentname); groupName.setText(parent); return convertView; } @Override public boolean hasStableIds() { return true; } @Override public boolean isChildSelectable(int i, int i1) { return true; } } 

List_item_child.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item_child" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/edtxt_1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:inputType="text" /> <EditText android:id="@+id/edtxt_2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:inputType="text" /> <EditText android:id="@+id/edtxt_3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:inputType="text" /> <EditText android:id="@+id/edtxt_4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:inputType="text" /> <EditText android:id="@+id/edtxt_5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:inputType="text" /> <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioGroup android:id="@+id/radio_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="Radio 1" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio 2" /> </RadioGroup> <TextView android:id="@+id/txt_childname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/radio_group" android:text="TaxiMeter ?" android:textAppearance="?android:attr/textAppearanceSmall" /> <Switch android:id="@+id/switch1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/radio_group" android:text="Switch" /> </RelativeLayout> </LinearLayout> 

De archivo: Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

¡Gracias!

Usted no va a ser capaz de pasar por la lista y obtener los valores de las vistas directamente, que es probablemente lo que usted planeaba hacer.

En su lugar, sólo mantenga un registro de los valores a medida que el usuario entra en ellos. Puede mantener un mapa hash de nombre de campo -> valor en su adaptador o actividad. Cada vez que el usuario cambia un valor en un campo, actualice ese campo con el nuevo valor en el hashmap. Cuando presionan hecho, usted puede iterar sobre el mapa para conseguir una lista de todos los campos que el usuario cambió y los valores los cambiaron a.

Para obtener los valores de los campos cuando el usuario los cambia, utilice un TextWatcher :

 myEditText.addTextChangedListener(new TextWatcher() { ... @Override onTextChanged(CharSequence newText, int start, int before, int count) { myMapOfFieldsToValues.set(myFieldName, newText); } } 

Puede agregar eso a getChildView en su adaptador. Puede derivar myFieldName desde la posición del padre y del niño.

  • Enfoque para rellenar la vista de lista expandible con la base de datos SQlite local
  • Vista de lista expandida necesaria para expandir la fila una a la vez
  • Cómo agregar divisores entre los elementos deshabilitados en ListView? - Lollipop
  • Cambiar icono de la vista de lista ampliable
  • Android deshabilita desplazamiento automático en la vista de lista expandible
  • Arrastrar y soltar listitem de un listview a otro listo de listview
  • ExpandableListView con un EditText
  • ExpandableListView lista expandible no expandir cuando su altura es wrap contenido, y algo está por debajo de él
  • Cómo ajustar la altura de ListView cuando hay ExpandableListView incrustado en ListView
  • Cómo agregar un hijo a un padre particular en el listview expandible android
  • LayoutAnimation sólo funciona una vez
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.