|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
|
Herramientas |
#1
|
||||
|
||||
Problema con AppCompatEditText dentro de un RecyclerView
Hola a todos, tengo un recyclerview que contiene a varios AppCompatEditText en los que solo se pueden escribir con numeros todo anda a la perfeccion hasta antes de llegar al elemento 8, ya que este no se muestra correctamente, se puede escribir en el elemento 8, pero no se muestra hasta que hago clic en el primer digito, hice una captura de pantalla para que entiendan mejor lo que pasa, dejaré adjunto algunas cosas.
Éste es el vídeo Este es mi row del recyclerView [php]<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androidrientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="50sp" androidrientation="horizontal" android:gravity="center"> <android.support.v7.widget.AppCompatTextView android:id="@+id/posicionDato" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="20sp" android:gravity="center" android:text="N"/> <android.support.v7.widget.AppCompatEditText android:id="@+idato" android:layout_width="0dp" android:layout_weight="3" android:layout_height="wrap_content" android:textAlignment="center" android:inputType="numberDecimal|numberSigned" /> <android.support.v7.widget.AppCompatEditText android:id="@+id/yDato" android:layout_width="0dp" android:layout_weight="3" android:layout_height="wrap_content" android:textAlignment="center" android:inputType="numberDecimal|numberSigned" /> <android.support.v7.widget.AppCompatImageView android:id="@+id/eliminarDato" android:padding="15sp" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:tint="@color/primary" android:src="@drawable/ic_action_eliminar_dato"/> </LinearLayout> </android.support.v7.widget.CardView> </LinearLayout>[/php]RecyclerView [php]<android.support.v7.widget.RecyclerView android:id="@+id/recyclerDatos" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </android.support.v7.widget.RecyclerView>[/php]Adapter del recyclerView [php]package com.alphemsoft.education.regression.vistaspersonal izadas.datos; import android.content.Context; import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.AppCompatEditText; import android.support.v7.widget.AppCompatImageButton; import android.support.v7.widget.AppCompatImageView; import android.support.v7.widget.AppCompatTextView; import android.support.v7.widget.RecyclerView; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; import com.alphemsoft.education.regression.R; import java.io.DataOutput; import java.util.List; /** * Created by Mijael Viricochea on 10/03/2017. * public class DatoAdapter extends RecyclerView.Adapter<DatoAdapter.DatoViewHolder>{ private List<Dato> datos; private Double[] datosX, datosY; // private Context mContext; // private MainFragment mFragment; public static class DatoViewHolder extends RecyclerView.ViewHolder{ public AppCompatTextView posicion; public AppCompatEditText x; public AppCompatEditText y; public AppCompatImageView eliminar; public DatoViewHolder(View v){ super(v); posicion=(AppCompatTextView)v.findViewById(R.id.po sicionDato); x=(AppCompatEditText)v.findViewById(R.id.ato); y=(AppCompatEditText)v.findViewById(R.id.yDato); eliminar=(AppCompatImageView)v.findViewById(R.id.e liminarDato); } } public DatoAdapter(List<Dato> items) { this.datos=items; if (datos.size()>0){ if (datos.get(0).getX()!=null){ datosX=enlistar(datos,"x"); datosY=enlistar(datos,"y"); } } } @override public int getItemCount(){ return datos.size(); } @override public DatoAdapter.DatoViewHolder onCreateViewHolder (ViewGroup viewGroup, int i){ View v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.cardview_elemento_lista_datos, viewGroup, false); return new DatoAdapter.DatoViewHolder(v); } // @override // public void onCreateViewHolder(Da) @override public void onBindViewHolder(final DatoViewHolder viewHolder, final int position) { viewHolder.posicion.setText(String.valueOf(viewHol der.getAdapterPosition()+1)); if (datos.get(position).getX()!=null){ viewHolder.x.setText(datos.get(position).getX().to String()); // viewHolder.y.setText(datos.get(position).getY().to String()); }else { viewHolder.x.setText(""); // viewHolder.y.setText(""); } if (datos.get(position).getY()!=null){ // viewHolder.x.setText(datos.get(position).getX().to String()); viewHolder.y.setText(datos.get(position).getY().to String()); }else { // viewHolder.x.setText(""); viewHolder.y.setText(""); } viewHolder.x.addTextChangedListener(new TextWatcher() { @override public void onTextChanged(CharSequence s, int start, int before, int count) { // Fires right as the text is being changed (even supplies the range of text) } @override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // Fires right before text is changing } @override public void afterTextChanged(Editable s) { if (s.toString().equals("")) { }else { datos.get(viewHolder.getAdapterPosition()).setX(s. toString()); } } }); viewHolder.y.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) { datos.get(viewHolder.getAdapterPosition()).setY(s. toString()); Log.d("Editable ",s.toString()); // if (s.toString().equals("")) { // Log.d("Editable ",s.toString()); / // }else { / // } } }); viewHolder.eliminar.setOnClickListener(new View.OnClickListener() { @override public void onClick(View view) { datos.remove(viewHolder.getAdapterPosition()); notifyItemRemoved(viewHolder.getAdapterPosition()) ; notifyDataSetChanged(); notifyItemRangeChanged(viewHolder.getAdapterPositi on(),datos.size()); } }); } private Double[] enlistar(List<Dato> datosUnitarios, String cual){ int n=datosUnitarios.size(); Double[] auxiliar=new Double[n]; for (int i=0;i<n;i++){ if (cual.equals("x")) auxiliar[i]=Double.parseDouble(datosUnitarios.get(i).getX()); else if (cual.equals("y")) auxiliar[i]=Double.parseDouble(datosUnitarios.get(i).getY()); } return auxiliar; } public Double[] getVariablesX(){ return enlistar(datos,"x"); } public Double[] getVariablesY(){ return enlistar(datos,"y"); } public boolean estanLlenos(){ boolean datosLLenos=true; if (datos.size()>=1){ for (int i=0;i<datos.size();i++){ datosLLenos=datos.get(i).getX()!=null&&datos.get(i ).getY()!=null; if (datosLLenos==false){ i=datos.size()-1; } } }else{ datosLLenos=false; } return datosLLenos; } } [/php]Por favor, ya estoy mucho tiempo con este problema, investigué y no sé como solucionarlo, gracias. Última edición por LEAJIM_454 Día 16/04/17 a las 16:23:26. |
|
#2
|
||||
|
||||
¿Alguien podría ayudarme por favor? me siento algo estancado, no entiendo por que el editText no agarra foco en pantalla.
|
Estás aquí | ||||||
|