Ampliando otra pregunta de Stackoverflow, he implementado un código de detección de gestos para poder detectar cuándo se ha eliminado una fila en mi lista de lista (que está en FrameLayout). Seguí la pregunta/respuesta de Damian aquí sobre cómo obtener la fila/vista individual del adaptador. How to get location (on screen) of row in listviewMostrando un botón Eliminar al deslizar en una vista de lista para Android
que tienen código en mi onFling que obtiene la vista de la fila, y trata de hacer un botón de borrado que se establece como invisible en mi diseño xml a visible. Sin embargo, esto no sucede. Me preguntaba cómo puedo hacer que un botón sea visible en una vista de lista en un deslizamiento.
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int itemId = MyClass.this.lv.pointToPosition(
(int) e1.getX(), (int) e1.getY());
Log.v("item id", String.valueOf(itemId));
View v = MyClass.this.adapter
.getViewOnScreen(itemId);
Button delete = (Button) v.findViewById(R.id.button_delete);
delete.setVisibility(View.VISIBLE);
//MyClass.this.adapter.notifyDataSetChanged();
}
} catch (Exception e) {
// nothing
}
return false;
}
}
Mi código de adaptador de lista es el mismo que el de la pregunta a la que se hace referencia.
Editar: Intenté usar getChildAt() en la vista de lista para obtener la vista de la fila, y esto funciona cuando hay una pantalla o menos elementos, pero cuando se devuelve más que la vista incorrecta y, por lo tanto, el botón eliminar incorrecto se vuelve visible
Edición 2: He utilizado la respuesta a la cuestión here a conseguir que funcione:
Hola usando el mismo código en fragmento, pero iam obtiene nulo en e1 en el método onFling. Podrías ayudarme ? –
@GangadharNimbally Probablemente deberías comenzar tu propia pregunta donde colocas la stacktrace completa y tu código. – Heskja
Implementé la clase anterior, pero de alguna forma no funciona para mí. nuevo MyGestureDetector (lst_sampleList); –