|
||
|
![]() |
![]() |
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
|
||||
|
||||
Necesito pasar los views del adapter a una actividad detalle.
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 Última edición por gonza28 Día 02/06/16 a las 01:07:05. |
|
#2
|
||||
|
||||
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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
Gracias de parte de: | ||
#3
|
||||
|
||||
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. ![]() 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 |
#4
|
||||
|
||||
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
__________________
|
Gracias de parte de: | ||
#5
|
||||
|
||||
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. [PHP] @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; }[/PHP] [PHP]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); } }[/PHP] Muchas gracias por la mano. |
![]() |
![]() |
||||||
|
Herramientas | |