PDA

Ver la Versión Completa : Apartado de favoritos?


Guixe94
11/09/14, 22:48:20
Hola, he estado buscando pero no encuentro bien bien como hacerlo.. quiero hacer un apartado de favoritos en mi app que en la barra me salga la tipica estrellita para marcarla y luego en una actividad o fragment pueda ver todos los favoritos.. a ver si alguien puede pasarme alguna tutorial preferiblemente en espanyol y sino en ingles, no pasa nada.
Se que existe google pero no encuentro nada que explique bien...

Gracias!

rafaxplayer
12/09/14, 08:06:23
Bueno te explico como hice yo uno a mi manera:

-Primero en la lista de elementos a cada elemento le puse un rating var el cual solo muestra una estrella , el xml seria asi:

<RatingBar
android:id="@+id/ratingBar1"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="1"
android:rating="0"
android:stepSize="1" />

como ves esta configurado para que step sea 1 , por lo tanto cunado pulses la estrella el valor de rating sera uno y cuando la desabilites sera 0 .


- Monte una base de datos para guardar mis favoritos con sqlitehelper y las diferentes funciones de manejo.

-En el adapter de la lista de elementos seria asi:


private class ViewHolder {
ImageView image;
TextView nombre;
RatingBar rat;
TextView time;
TextView site;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;

holder = new ViewHolder();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item, null);

holder.image = (ImageView) convertView
.findViewById(R.id.imageView1);
holder.nombre = (TextView) convertView.findViewById(R.id.textView1);
holder.rat = (RatingBar) convertView.findViewById(R.id.ratingBar1);
holder.time = (TextView) convertView.findViewById(R.id.textView3);
holder.site = (TextView) convertView.findViewById(R.id.textView2);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
try {
xvideo rowItem = arr.get(position);
FavoritosSqlite fav = new FavoritosSqlite(context, FavoritosSqlite.TABLENAME_X, null, 1);
if(fav.GetExistFromName(rowItem.getname())) {
rat=1;

}

holder.nombre.setText(rowItem.getname() + " ");
holder.rat.setRating(rat);
holder.time.setText(rowItem.gettime() + " ");
holder.site.setText(rowItem.geturlVideo().substrin g(rowItem.geturlVideo().indexOf("www")+4, rowItem.geturlVideo().indexOf("com")+3) + " ");
rat=0;
imageLoader.displayImage(rowItem.geturlimg(), holder.image);

} catch (Exception ex) {
//ex.printStackTrace();
holder.nombre.setText("Undefined");
holder.rat.setRating(0);
holder.time.setText("0:00");
}

return convertView;
}
al montar la lista como ves en el sqlitehelper hay una método que verifica si existe ese elemento en la tabla favoritos , si es así le da rating 1 si no por defecto es 0.

-En el onclick de cada rating según sea su rating 0 o 1 guarde en la bd favoritos los datos del item o si existen los elimine .

http://developer.android.com/reference/android/widget/RatingBar.OnRatingBarChangeListener.html

-En otra actividad muestra la lista de favoritos desde la base de datos .

A groso modo este fue el tema que monte con el rating , espero te sirva de algo.

Dexafree
12/09/14, 10:11:38
No creo que encuentres tutoriales dedicados a "Hacer apartados de favoritos", ya que es una simple implementación de una BD SQLite


quiero hacer un apartado de favoritos en mi app

Suena a un trabajo perfecto para una base de datos y un ListView


que en la barra me salga la tipica estrellita para marcarla

Solo tienes que añadirlo al R.menu que estes utilizando en la Activity/Fragment, y si quieres una estrellita, Android trae la llena y la vacía


luego en una actividad o fragment pueda ver todos los favoritos

Cogiendo todos los registros de la tabla que tengas para guardar favoritos, te montas el ListView, el adapter, y ya lo tienes :ok:



Después, rafaxplayer, en ese código que has pasado, en cada iteración vuelves a generar un FavoritosSqlite
No sería mejor crear uno y reutilizar siempre el mismo?

rafaxplayer
12/09/14, 16:29:16
Si dexafren , lo tenia que haber instanciado en el constructor , luego lo arreglo , gracias

Guixe94
12/09/14, 16:51:07
Voy a probar como me habeis dicho. Muchas gracias!