Manera correcta de extender ParseObject y tener una fábrica de consultas genéricas

Necesito una forma de consultar diferentes clases de análisis basado en las opciones hechas por un usuario. Abordé el problema de la siguiente manera. Aconseje por favor cómo arreglar el problema que tengo o sugiero el acercamiento alternativo / mejor.

Tengo clases A, B, C, ... que corresponden a las clases de Parse. Ellos son muy similares. Por lo tanto, he creado clase abstracta Q :

 public abstract class Q extends ParseObject { // some shared methods public abstract ParseQuery<? extends Q> getQuery(); } 

Cada uno de A, B, C, ... se define como:

 @ParseClassName("A") public class A extends Q { private static final A INSTANCE = new A(); @Override public ParseQuery<A> getQuery() { return ParseQuery.getQuery(A.class); } public static A getInstance(){ return INSTANCE; } } 

Tengo el siguiente adaptador de reciclado para mi vista de reciclado:

 public class QAdapter extends ParseRecyclerQueryAdapter<Q,QAdapter.MyViewHolder>{ ... } 

El error que estoy recibiendo ocurre en la siguiente línea en mi activty:

 mRecyclerAdapter = new QAdapter(this, factory, true); 

El mensaje de error es:

 Error:(58, 70) error: incompatible types: QueryFactory<CAP#1> cannot be converted to QueryFactory<Q> where CAP#1 is a fresh type-variable: CAP#1 extends Q from capture of ? extends Q 

Intenté hacer la definición de la clase del adaptador genérica como public class QAdapter<T extends Q> extends ParseRecyclerQueryAdapter<T, QAdapter.MyViewHolder> {... } , con todo esto introdujo otro error que dice que QAdapter no aplicó onBindViewHolder aunque es implementado.

Esto puede no funcionar, pero intentaría reemplazar

 public class QAdapter extends ParseRecyclerQueryAdapter<Q,QAdapter.MyViewHolder>{ ... } 

con

 public class QAdapter extends ParseRecyclerQueryAdapter<? extends Q,QAdapter.MyViewHolder>{ ... } 

Trate de reemplazar

 extends ParseRecyclerQueryAdapter<T, QAdapter.MyViewHolder> {... } 

con

 extends ParseRecyclerQueryAdapter<T extends ParseObject, QAdapter.MyViewHolder> {... } 

Esta es la forma de hacer mi ParseRecyclerQueryAdapter trabajo

Bueno, como dice el viejo refrán, "asegúrese de que todo es contiguo" o algo así. Usted tiene una gran idea para un resumen y lo está haciendo bien, pero tal vez usted acaba de obtener un problema de herencia al no tener la misma llamada emitida por los mismos parámetros que cumplió el procesador. Como <? extends Q,...> <? extends Q,...> Así que en ese caso usted tiene que asegurarse de que todo es redundante. ¡Buena suerte!

Debe hacer su clase base Q genérica:

 public abstract class Q<T extends Q<T>> extends ParseObject { // some shared methods public abstract ParseQuery<T> getQuery(); } 

Entonces su clase A se convierte en

 @ParseClassName("A") public class A extends Q<A> { private static final A INSTANCE = new A(); @Override public ParseQuery<A> getQuery() { return ParseQuery.getQuery(A.class); } public static A getInstance(){ return INSTANCE; } } 

Y ParseQuery es:

 public class ParseQuery<T> { public static <T> ParseQuery<T> getQuery(Class<T> clazz) { return null; } } 
  • Parse.com obtener valor con la consulta
  • Recuperar una matriz de parse.com y agregar los valores a una matriz local (Android)
  • Productos de Android Gradle con notificaciones de Parse Push
  • Schedulers.io () no vuelve al hilo principal
  • Problemas con ProGuard para Android con Parse 1.3.5 jar
  • Qué plataforma MBaaS utilizar para un proyecto específico: Parse o Google Cloud
  • Mensaje de error de Logcat: intento de destruir la barrera con un conteo no nulo
  • App apache cordova se bloquea después de recibir la notificación push parse.com
  • Guía de aplicaciones de chat de Android utilizando Parse y PubNub
  • Error al usar Parse SDK para tesiting PUSH Notificaciones-Varios archivos dex definen Lcom / parse / FacebookAuthenticationProvider $ 1
  • Los datos permanecen en el almacén de datos local después de desenfilar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.