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.
- EditarTexto contenido dentro de ExpandableListView desaparecer al hacer clic en siguiente ExpandableListView encabezado
- ¿Cómo puedo añadir una vista de pie de página a una lista secundaria en una lista de extensibilidadListActivity?
- Convertir el ejemplo expandableListView en un fragmento
- No se puede resolver el método setOnChildClickListener
- ExpandableListView con opción múltiple guardar el elemento seleccionado en un array
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:
¡Gracias!
- Fragmentos múltiples con diferentes listas de expansión para los mismos datos
- Listview / ExpandableListVer imágenes de contenido cuando se llama notifyDataSetChanged
- Vista de lista expandible setOnChildClickListener no funciona
- El método findViewById (int) no está definido para el tipo
- Ver contenido a continuación ExpandableListView
- ¿Cómo cambiar la posición del indicador del grupo ExpandableListView?
- ExpandableListview Como TreeView Android
- ExpandableListFragment con LoaderManager para el paquete de compatibilidad
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.
- Cómo obtener una cámara Android2 con una relación de 1: 1 como Instagram?
- ¿Por qué FirebaseRemoteConfig.fetch no llama a su devolución de llamada?