I have a list with a series of streaming radios and I have to add a favorite button (the typical heart) and when I press it, that radio is saved in another activity (Favorites) and when it leaves and enters the application to save the changes but I'm lost and I can not find a solution.
I have another activity that when you click on the radio, a player opens, but it will not let me put it. But I think that for favorites I do not need to publish that activity.
I attach what I have so far ...
Principal
import android.content.Intent;
import android.graphics.Typeface;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
public class Principal extends AppCompatActivity {
//private Typeface comicBook;
ListView lista;
private MediaPlayer player;
//Vector para añadir los datos de las radios
String [][] datos = {
{"RadioAnime","Radio Anime station online listen anime music streaming radio anime radio musica anime openings, endings la mejor radio para el j-pop y k-pop.","http://radioanime.radioca.st/stream"},//0
{"AnimeRadio UK", "Anime Radio UK is the only official radio station dedicated to bringing you the very best music from Japanese anime, video games, film, Jpop, Jrock and everything else inbetween.","http://149.255.59.164:8049/stream"},
{"Anime Blast Radio", "The newest place for anime music, Anime Blast Radio - Anime Internet Radio. The place for the best streaming anime music.","http://192.99.8.170:6110/stream?icy=http"},
{"Chiru.no", "Anime Japanese Jpop Video Game","http://142.4.209.132:8000/stream"},
{"Extreme Anime Radio", "Extreme Anime Radio, Your Anime & J-Pop Radio Station, Playing best top Japanese jpop jrock video game music online, streaming.","http://174.37.159.206:8052/stream?icy=http"},
{"Otaku Music Radio", "Emisora de radio con la mejor música otaku, j-rock, j-pop..., y las noticias del mundo japonés, del manga y del anime.","http://149.56.240.65:20068/stream?icy=http"},//5
{"Akihabara Radio", "Música Asiatica, OST de Anime y Covers.","http://176.31.241.17:8814/mp3?icy=http"},
{"Blue Anime Ivana","Welcome to my Anime Radio Station where you will be able to hear a large amount of Anime music from over 500 different Anime! ","http://listen.radionomy.com:80/BlueAnimeIvana?icy=http"},
{"AnimeNexus","Radio Anime Nexus, La mejor radio anime de Latinoamérica, J-Pop y J-Rock, con Podcast informativos, Revista otaku y mucho mas.","http://radio.animenexus.mx:8000/animenexus"},
{"Anime-extremo","Esta radio esta dedicada a todos los fans del anime, aquí se comparten Animes por diversos servidores (Google Drive, Mega, 1fichier, etc.) en HD y BD.","http://192.99.17.12:4708/stream"},
{"BaKaRadio.Net","La música japonesa, Jpop, Jrock, Anime, Game y muchos más. Escucha música anime en línea las 24 horas.","http://144.217.203.184:8398/stream"},//10
{"McAnimeRadio","Mc Radio dónde escuchamos nuestra musica favorita ¡Como Tú!","http://198.105.216.204/proxy/mcradio?mp=/;"}
};
//vector para añadir los logos de las emisoras, tiene que estar cada logo en el orden como arriba
int[] datosImg = {R.drawable.logo0,R.drawable.logo1,R.drawable.logo2,R.drawable.logo3,R.drawable.logo4,R.drawable.logo5,
R.drawable.logo6,R.drawable.logo7,R.drawable.logo8,R.drawable.logo9,R.drawable.logo10,R.drawable.logo11};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
//String fuente2 = "fuentes/ComicBook.otf";
//this.comicBook = Typeface.createFromAsset(getAssets(),fuente2);
lista = (ListView)findViewById(R.id.lvlista);
//lista.setFocusable(false);
//instanciamos y le mandamos los datos
lista.setAdapter(new Adaptador(this, datos, datosImg));
lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent visorRadio = new Intent(Principal.this, PantallaRadio.class);
visorRadio.putExtra("TIT", datos[position][0]);
visorRadio.putExtra("URL", datos[position][2]);
visorRadio.putExtra("IMG", datosImg[position]);
startActivity(visorRadio);
overridePendingTransition(R.anim.left_in, R.anim.left_out);
}
});
}
}
Adapter
import android.app.Dialog;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class Adaptador extends BaseAdapter {//esta clase es para asociar los elementos, la que va a controlar nuestro adaptador
private Typeface comicBook;
private static LayoutInflater inflater = null;//Para instanciar el archivo de diseño
Context contexto;//el entorno de la app, todo que utiliza para generar el adaptador
String [][] datos;//matriz para almacenar los datos de la principal
int [] datosImg;//igual que arriba
//Generamos el constructor
public Adaptador (Context contexto, String [][] datos, int [] datosImg){
this.contexto = contexto;
this.datos = datos;
this.datosImg = datosImg;
//declaramos el inflater y lo inicializamos, con esto instanciamos el xml
inflater = (LayoutInflater)contexto.getSystemService(contexto.LAYOUT_INFLATER_SERVICE);
comicBook = Typeface.createFromAsset(contexto.getAssets(), "fuentes/ComicBook.otf");
}
@Override
public View getView(int i, final View convertView, ViewGroup parent) {
final View vista = inflater.inflate(R.layout.elemento_lista, null);
TextView titulo = (TextView)vista.findViewById(R.id.tvTitulo);
TextView descripcion = (TextView)vista.findViewById(R.id.tvDescripcion);
ImageView imagen = (ImageView)vista.findViewById(R.id.ivImagen);
//RatingBar calificacion = (RatingBar)vista.findViewById(R.id.ratingBarRadio);
titulo.setText(datos[i][0]);
titulo.setTypeface(comicBook);
descripcion.setText(datos[i][1]);
descripcion.setTypeface(comicBook);
//calificacion.setProgress(Integer.valueOf(datos[i][1]));
imagen.setImageResource(datosImg[i]);
imagen.setTag(i);
imagen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Dialog dialog = new Dialog(contexto);
ImageView img = new ImageView(contexto);
img.setImageResource( datosImg[(Integer)v.getTag()]);
dialog.addContentView(img,new ViewGroup.LayoutParams(500,500));
dialog.show();
//Intent visorImagen = new Intent(contexto, VisorImagen.class);
//visorImagen.putExtra("IMG", datosImg[(Integer)v.getTag()]);
//contexto.startActivity(visorImagen);
}
});
return vista;
}
@Override
public int getCount() {
return datos.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
element_list.xml
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="6dp" />
<android.support.constraint.Guideline
android:id="@+id/guideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="116dp" />
<android.support.constraint.Guideline
android:id="@+id/guideline7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_begin="102dp" />
<TextView
android:id="@+id/tvTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:text="TextView"
android:textColor="@android:color/background_light"
android:textSize="30sp"
app:layout_constraintBottom_toTopOf="@+id/guideline3"
app:layout_constraintStart_toStartOf="@+id/guideline7"
app:layout_constraintTop_toTopOf="@+id/guideline"
app:layout_constraintVertical_bias="0.037" />
<ImageView
android:id="@+id/ivImagen"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toTopOf="@+id/guideline3"
app:layout_constraintEnd_toStartOf="@+id/guideline7"
app:layout_constraintHorizontal_bias="0.376"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline"
app:layout_constraintVertical_bias="0.529"
app:srcCompat="@drawable/logo0" />
<TextView
android:id="@+id/tvDescripcion"
android:layout_width="264dp"
android:layout_height="56dp"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:alpha=".7"
android:text="TextView"
android:textColor="@android:color/background_light"
android:textSize="10sp"
app:layout_constraintBottom_toTopOf="@+id/guideline3"
app:layout_constraintStart_toStartOf="@+id/guideline7"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0" />
activity_principal.xml
<ListView
android:id="@+id/lvlista"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
It's my first post, if I have to attach something else to notify me.
Thanks in advance.