PDA

Ver la Versión Completa : [ SOLUCIONADO ] Necesito pasar los views del adapter a una actividad detalle.


gonza28
31/05/16, 12:17:26
Hola.
Bueno, les comento mi problema.
Hasta ahora venia utilizando ListView. y en el casi de necesitar base de datos, cosa que poco hice sobre eso a tal punto que aún estoy verde, pero en ese caso, lo hice con CursorAdapter.

Resulta que algunas animaciones muy lindas, no las puedo hacer con el ListView y eso me lleva a empezar de nuevo con el RecyclerView.

Mi problema despues de haber luchado y resuelto algunos problemas grandes con el Provider, ahora estoy en un serio problema que me tiene 2 dias en la lucha.

Alguien sería amable de darme una mano por favor? quier pasar los views del adapter a una actividad detalle y no puedo hasta ahora. Serian capas de mostrarme los metodos o incluso voy a dejar en un editor online mi adapter y actividad para que se vea aún mejor y completo.
Si alguien me da una mano, le estaré muy agradecido. Saludos y muchas gracias.

Este es mi adapter:
https://codeshare.io/IROdt

Actividad:
https://codeshare.io/AXALi

Actividad Detalles

https://codeshare.io/BNFlj

mocelet
31/05/16, 15:29:19
No sé a qué te refieres con pasar los views del adapter a otra actividad. Las views pertenecen a la actividad donde estén, no se "pasan" entre actividades. Y el adapter sólo tiene sentido para poblar la lista o el recyclerview, fuera de ahí no lo usas porque no hay nada que adaptar.

Lo que tienes que hacer es pasar mediante un Intent los datos que le hagan falta a la nueva actividad para mostrarlos (o algún identificador para que obtenga los datos del modelo). Pero las vistas son las que cree esa actividad en su layout.

gonza28
31/05/16, 15:41:58
No sé a qué te refieres con pasar los views del adapter a otra actividad. Las views pertenecen a la actividad donde estén, no se "pasan" entre actividades. Y el adapter sólo tiene sentido para poblar la lista o el recyclerview, fuera de ahí no lo usas porque no hay nada que adaptar.

Lo que tienes que hacer es pasar mediante un Intent los datos que le hagan falta a la nueva actividad para mostrarlos (o algún identificador para que obtenga los datos del modelo). Pero las vistas son las que cree esa actividad en su layout.
Tan solo quiero pasar los ítemes del adaptador. O sea un tipo OnItemClickListener. Solo que no me familiarizo con el recycler.

Claro, en la la lista hacer clic en un ítem y pasar todo contenido a otra actividad. Yo siempre lo hago desde un modelo, como veras, los datos los saco desde una base de datos y no es lo mismo al margen qué con un CursorAdapter es mucho más fácil. Pero el CursorAdapter es para un ListView. El recycler es más complicado según mi humilde criterio.

Lo que pretendo, no se si soy jodido de explicarme o que pasa. Pero pretendo hacer clic en un ítem y poder mostrar esos views (texto etc.) en una actividad preparada para los detalles. Nada más. Pero no me sale.

Enviado desde mi SM-N910U mediante Tapatalk

Dexafree
31/05/16, 16:01:12
No termino de entender si el problema es que en el RecyclerView no tienes el "onItemClickListener" como tal, si quieres pasar el contenido del item pulsado a la otra activity, o el CursorAdapter.

Creo que te lo comente en otro hilo, en caso de tener un Cursor puedes convertirlo a lista de items con un while, y de esa forma podrás trabajar con un Adapter normal, el cuál es más facilmente adaptable a un RecyclerView.
Si estas empezando con él, esta lib te puede resultar útil, implementa bastantes cosas de serie:
https://github.com/mikepenz/FastAdapter

Y para pasar el item a la otra Activity, como bien te ha dicho Mocelet solo tendrías que pasar como extra en el Intent una de estas dos cosas:
- El objeto del modelo (que implemente Parcelable)
- El id del objeto (si lo tienes en base de datos), y en la activity destino irlo a buscar al modelo de nuevo

gonza28
02/06/16, 00:54:01
Compañeros. Resuelto!

Esta es la manera. quizás haya otras maneras seguramente las hay. Pero la mia fue así y ojalá sirva a alguien más. Y si alguien necesita mas detalles de como pasar los datos provenientes de una base de datos pregunta y le paso el codigo.

con esto enviamos los datos a la actividad detalles

https://codeshare.io/8td9v

Así recibimos los datos
https://codeshare.io/AXALi

Por las dudas dejo los fragmentos tambien.

override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_lista, parent, false);
final ViewHolder vh = new ViewHolder(v);

v.setOnClickListener(new View.OnClickListener() {
override
public void onClick(View v) {
final int posicion = vh.getAdapterPosition();
if (posicion != RecyclerView.NO_POSITION) {
Log.d(TAG, "onClick() position with: " + posicion);
Log.d(TAG,"ID de la posicion actual:" + items.moveToPosition(posicion));
items.moveToPosition(posicion);

String id = items.getString((Consulta.ID));
String nombre = items.getString((Consulta.NOMBRE));

Intent e = new Intent(contexto, ActividadDetalle.class);
e.putExtra("id", id);
e.putExtra("nombre", nombre);

contexto.startActivity(e);

}
}

});
return vh;
}

public class ActividadDetalle extends AppCompatActivity {

private static final String TAG = ActividadDetalle.class.getSimpleName();
private TextView hora, txFecha;

override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);

nombre = (TextView) findViewById(R.id.textNombre);
txId = (TextView) findViewById(R.id.textId);
// Dehabilitar titulo de la actividad
if(getSupportActionBar()!=null)
getSupportActionBar().setDisplayShowTitleEnabled(f alse);



String nombre = getIntent().getStringExtra("nombre");
String id = getIntent().getStringExtra("id");


nombre.setText(nombre);
txId.setText(id);




}

}

Muchas gracias por la mano.