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

Respuesta
 
Herramientas
  #1  
Viejo 14/04/17, 18:31:12
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
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.
Responder Con Cita


  #2  
Viejo 16/04/17, 16:24:48
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
¿Alguien podría ayudarme por favor? me siento algo estancado, no entiendo por que el editText no agarra foco en pantalla.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 06:03:09 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /