Obtener valor de EditText colocado en la vista de lista en android

No sé conseguir el lugar del valor del texto de la edición en una visión de la lista. Llené la visión de la lista con datos usando el simpleadapter.

¿Alguien dará código de ejemplo para getiing el valor edittext de una lista

for (int i = 0; i < ListSortOrder.getAdapter().getCount(); i++) { HashMap result = (HashMap)ListSortOrder.getItemAtPosition(i); **View vListSortOrder; vListSortOrder=ListSortOrder.getChildAt(i); TextView Sort_DeliveryOrder=(TextView)vListSortOrder.findViewById(R.id.et_Sort_Order);** initialSortOrder.put("DeliveryOrder",Sort_DeliveryOrder.getText().toString()); dbAdapter = new DatabaseAdapter(this); dbAdapter.open(); dbAdapter.BeginTransaction(); dbAdapter.UpdateRecord("tblDelivery", initialSortOrder, "PKDelivery" + "=" + result.get("Sort_PKDelivery").toString(), null); } 

Tal vez ya tienes la respuesta, pero voy a poner mi solución aquí porque veo un montón de preguntas sin una buena respuesta. Tengo un ArrayAdapter personalizado con el código del fowling que pone al día la lista de la fuente "telefones".

  @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.telefone_form, parent, false); tipoEditText = (EditText) view.findViewById(R.id.telefone_form_tipo); telefoneEditText = (EditText) view.findViewById(R.id.telefone_form_telefone); Telefone telefone = telefones.get(position); tipoEditText.setText(telefone.getTipo()); telefoneEditText.setText(telefone.getTelefone()); final int i = position; tipoEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { telefones.get(i).setTipo(s.toString()); } }); telefoneEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { telefones.get(i).setTelefone(s.toString()); } }); 

En la actividad que establece el adaptador, obtengo todos los cambios con el código:

 for (int i = 0; i < telefoneListView.getAdapter().getCount(); i++) { View viewTelefone = telefoneListView.getChildAt(i); if (viewTelefone.findViewById(R.id.telefone_form_tipo) != null) { EditText tipoEditText = (EditText) viewTelefone.findViewById(R.id.telefone_form_tipo); EditText telefoneEditText = (EditText) viewTelefone.findViewById(R.id.telefone_form_telefone); Log.d(TAG, tipoEditText.getText().toString() + ":" + telefoneEditText.getText().toString()); } } 

Saludos, Marcello

Me enfrenté al mismo problema pero lo resolví. Así que estoy compartiendo lo que hice:

  • Lógica: As Cuando el usuario llena el valor en EditText de listview, los valores con el índice deben almacenarse para su uso futuro. Por lo tanto, en su TouchListener crear instancia de ArrayList y llenado con un valor vacío. Ahora, cuando el usuario cambia su valor, el nuevo valor se actualiza en la última posición (índice almacenado en TouchListener) de ArrayList.

    • Problema: También llena los valores vacíos como TouchListener llamados cada vez que el usuario cambia el valor en EditText.So, siempre que este ArrayList utilizó tuvo que eliminar los valores vacíos.

    *Solución

     **In getView set tag (position) in EditText so that we can identify it on its events. //On TouchListner myEditText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { HashMap<String, String> hashMap=new HashMap<String,String>(); hashMap.put("", ""); MyArrayList.add(hashMap); if(MyArrayList.size()>0) { index=MyArrayList.size()-1; } } } return false; } }); myEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub System.out.println(myEditText.getText().toString()); String quanString=String.valueOf(myEditText.getTag()); HashMap<String, String> hashMap=new HashMap<String, String>(); hashMap.put(quanString,value); MyArrayList.set(index,hashMap); } }); return listRowItemView; } //Let Suppose values had to fetch on button click-- findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("MyArrayList....value before removing====>"+MyArrayList); // TODO Auto-generated method stub for(int i=0;i<MyArrayList.size();i++) { HashMap<String, String> hashMap=new HashMap<String, String>(); hashMap= MyArrayList.get(i); for (Entry<String, String> entry : hashMap.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if(key.length()<=0 & value.length() <=0) { MyArrayList.remove(i); System.out.println("At index"+i+" key value was empty so it is removes"); System.out.println("MyArrayList..value after removeing empty values====>"+MyArrayList); } } } } }); 
 package com.example.user.listview; import android.content.ContentValues; import android.os.Build; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import java.util.ArrayList; import java.util.HashMap; public class MainActivity extends AppCompatActivity { private ListView lv1; private EditText Et1; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv1 = (ListView) findViewById(R.id.lv); btn = (Button) findViewById(R.id.btn); Et1 = (EditText) findViewById(R.id.ETName); final ArrayList<String> List = new ArrayList<>(); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String item = Et1.getText().toString(); List.add(item); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,List); lv1.setAdapter(adapter); } }); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.