¿Solo puedo obtener parte de una url (enlace) y ponerla en cadena en Android?
[Resuelto] - Necesito resolver el problema a continuación Ok, no estaba muy seguro de cómo formular esta pregunta, pero básicamente lo que quiero hacer es que obtuve una url de un feed RSS en Android, y necesito poner parte de esa url en una cadena, la url se verá algo como esto:http://www.prsn.uprm.edu/Spanish/Informe_Sismo/myinfoGeneral.php?id=20161206012821'
y solo quiero la parte después de id =SOLO EL NÚMERO DE IDENTIFICACIÓN, Luego necesito el id para ponerlo en la siguiente url:http://shake.uprm.edu/~shake/archive/shake/**ID HERE**/download/tvmap.jpg
, para cargar la imagen correspondiente a la identificación en Glide:[Resuelto] Esta parte está resuelta pero tengo otro problema
Tengo muchas maneras de hacer esto
Primera forma:
//the original String
String somestring = "http://www.prsn.uprm.edu/Spanish/Informe_Sismo/myinfoGeneral.php?id=20161206012821";
//save the index of the string '=' since after that is were you find your number, remember to add one as the begin index is inclusive
int beginIndex = somestring.indexOf("=") + 1;
//if the number ends the string then save the length of the string as the end, you can change this index if that's not the case
int endIndex = somestring.length();
//Obtain the substring using the indexes you obtained (if the number ends the string you can ignore the second index, but i leave it here so you may use it if that's not the case)
String theNumber = somestring.substring(beginIndex,endIndex);
//printing the number for testing purposes
System.out.println("The number is: " + theNumber);
//Then create a new string with the data you want (I recommend using StringBuilder) with the first part of what you want
StringBuilder sb=new StringBuilder("http://shake.uprm.edu/~shake/archive/shake/");
// add the number
sb.append(theNumber);
//then the rest of the string
sb.append("/download/tvmap.jpg");
//Saving the String in a variable
String endResult = sb.toString();
//Verifying end result
System.out.println("The end result is: "+endResult);
Glide.with(context).load(endResult).into(holder.Thumbnail);
Segunda forma:
String url = "http://www.prsn.uprm.edu/Spanis,h/Informe_Sismo/myinfoGeneral.php?id=20161206012821";
String[] array = url.split("id=");
String id = array[1];
String urlToLoad = "http://shake.uprm.edu/~shake/archive/shake/"+id+"/download/tvmap.jpg"
Glide.with(context).load(urlToLoad).into(holder.Thumbnail);
[Problema]
Mi problema es, si pongo la URL normalmente, es decirhttp://www.prsn.uprm.edu/Spanish/Informe_Sismo/myinfoGeneral.php?id=20161206012821
los dos métodos funcionan para mí, pero si obtengo la URL VíagetLink()
no funciona para miPor favor, ayúdame.
Espero haberte explicado bien. Gracias por adelantado.
Ahí esta miMyadapter.java el método para obtener el enlace escurrent.getLink()
package com.example.rssreader;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
/**
* Created by Efrain on 26-02-2016.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
ArrayList<FeedItem>feedItems;
Context context;
public MyAdapter(Context context,ArrayList<FeedItem>feedItems){
this.feedItems=feedItems;
this.context=context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.custum_row_news_item,parent,false);
MyViewHolder holder=new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
YoYo.with(Techniques.FadeIn).playOn(holder.cardView);
FeedItem current=feedItems.get(position);
holder.Title.setText(current.getTitle());
holder.Description.setText(current.getDescription());
holder.Date.setText(current.getPubDate());
holder.Link.setText(current.getLink());
//the original String
String somestring = current.getLink();
//save the index of the string '=' since after that is were you find your number, remember to add one as the begin index is inclusive
int beginIndex = somestring.indexOf("=") + 1;
//if the number ends the string then save the length of the string as the end, you can change this index if that's not the case
int endIndex = somestring.length();
//Obtain the substring using the indexes you obtained (if the number ends the string you can ignore the second index, but i leave it here so you may use it if that's not the case)
String theNumber = somestring.substring(beginIndex,endIndex);
//printing the number for testing purposes
System.out.println("The number is: " + theNumber);
//Then create a new string with the data you want (I recommend using StringBuilder) with the first part of what you want
StringBuilder sb=new StringBuilder("http://shake.uprm.edu/~shake/archive/shake/");
// add the number
sb.append(theNumber);
//then the rest of the string
sb.append("/download/tvmap.jpg");
//Saving the String in a variable
String endResult = sb.toString();
//Verifying end result
System.out.println("The end result is: "+endResult);
Glide.with(context).load(endResult).into(holder.Thumbnail);
}
@Override
public int getItemCount() {
return feedItems.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView Title,Description,Date,Link;
ImageView Thumbnail;
CardView cardView;
public MyViewHolder(View itemView) {
super(itemView);
Title= (TextView) itemView.findViewById(R.id.title_text);
Description= (TextView) itemView.findViewById(R.id.description_text);
Date= (TextView) itemView.findViewById(R.id.date_text);
Thumbnail= (ImageView) itemView.findViewById(R.id.thumb_img);
cardView= (CardView) itemView.findViewById(R.id.cardview);
Link= (TextView) itemView.findViewById(R.id.info);
}
}
}