Ich habe einen Code geschrieben, um Bilder auf Twitter zu durchsuchen, indem ich Hashtags verwende und die Bilder in meiner Anwendung anzeigen.Wie man URL zu ImageView setzt?
Hier meine Struktur. Ich habe eine SearchView, wenn ein Benutzer etwas Text in das SearchView, Twitter4j Query Suche nach ihm auf Twitter. Dann parse ich die Bild-URLs von den Ergebnissen.
Jetzt meine Frage. Wie kann ich die Bilder von den URLs in eine Bildansicht einfügen, um das Bild hinter der URL anzuzeigen?
Hier mein Code:
/* Setup Configurationbuilder for Twitter4j API, build a searchquery for search Twitter,
search Twitter with the search string from the SearchView
*/
public void searchTweets(String searchString) {
//auth. the application by creating new ConfigurationBuilder
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setJSONStoreEnabled(true);
cb.setOAuthConsumerKey("someSecretStuff");
cb.setOAuthConsumerSecret("someSecretStuff");
cb.setOAuthAccessToken("someSecretStuff");
cb.setOAuthAccessTokenSecret("someSecretStuff");
//start the search by build a new query
TwitterFactory tf = new TwitterFactory(cb.build());
final twitter4j.Twitter twitter = tf.getInstance();
final Query query = new Query(searchString);
//start a new Thread to evaluate the searchQuery
new Thread(new Runnable() {
@Override
public void run() {
try {
//get the results
QueryResult result = twitter.search(query);
//for each result print the user and the the messagetext
for (Status status : result.getTweets()) {
twitter4j.MediaEntity [] media = status.getMediaEntities();
for (twitter4j.MediaEntity m : media) {
System.out.println(m.getMediaURL());
}
}
} catch (TwitterException e) {
e.printStackTrace();
}
}
}).start();
}
aktualisieren
Hey Leute,
vielen Dank für alle Ihre Antworten und Hinweise. Jetzt weiß ich, wie man ein Bild von der URL bekommt, aber ich habe immer noch Probleme, es in meinem ImageView zu zeigen. Ich möchte einen Stapel Bilder implementieren, um sie für Gleiches und Abneigendes zu verschieben. Also mache ich eine Schleife, die für jedes Element eine relativeLayout und eine imageView erstellt. Jetzt habe ich versucht, die Bilder von URL in die Bildansicht zu bringen, aber es hat nicht funktioniert. Die App startet und ich sehe nur einen weißen Bildschirm.
Hier ist mein Code:
//for each picture into the list...
for (int i = 0; i < imageUrl.size(); i++) {
//set RelativeLayout
final RelativeLayout relView = new RelativeLayout(this);
//set Params for the RelativeLayout
relView.setLayoutParams(new RelativeLayout.LayoutParams((windowWidth - 80), windowHeight - 80));
relView.setX(40);
relView.setY(40);
relView.setTag(i);
//set BackgroundColor RelativeLayout
relView.setBackgroundColor(Color.WHITE);
String url = imageUrl.get(i);
//set ImageView
ImageView img = new ImageView(this);
Picasso
.with(this)
.load(url)
.resize(600, 200)
.centerCrop()
.into(img);
//set params to RelativLayout
img.setLayoutParams(new RelativeLayout.LayoutParams((windowWidth), windowHeight));
//show image
relView.addView(img);
//create and set like stamp
final Button imageLike = new Button(this);
imageLike.setLayoutParams(new ActionBar.LayoutParams(100, 50));
imageLike.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_stamp_like));
imageLike.setX(20);
imageLike.setY(80);
imageLike.setAlpha(alphaValue);
relView.addView(imageLike);
//create and set dislike stamp
final Button imagePass = new Button(this);
imagePass.setLayoutParams(new ActionBar.LayoutParams(100, 50));
imagePass.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_stamp_pass));
imagePass.setX((windowWidth - 200));
imagePass.setY(100);
imagePass.setRotation(45);
imagePass.setAlpha(alphaValue);
relView.addView(imagePass);
//create touchlistener for slide
final int finalI = i;
relView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//get screen coordinates
x_cord = (int) event.getRawX();
y_cord = (int) event.getRawY();
//set coordinates to RelativeLayout
relView.setX(x_cord - screenCenter + 40);
relView.setY(y_cord - 650);
switch (event.getAction()) {
//if picture slide down, nothing happens
case MotionEvent.ACTION_DOWN:
break;
//if pictures slide to side right, set rotation coordinates
//to RelativeLayout, set likes to 2
case MotionEvent.ACTION_MOVE:
x_cord = (int) event.getRawX();
y_cord = (int) event.getRawY();
relView.setX(x_cord - screenCenter + 40);
relView.setY(y_cord - 650);
if (x_cord >= screenCenter) {
relView.setRotation((float) ((x_cord - screenCenter) * (Math.PI/32)));
if (x_cord > (screenCenter + (screenCenter/2))) {
imageLike.setAlpha(1);
if (x_cord > (windowWidth - (screenCenter/4))) {
likes = 2;
} else {
likes = 0;
}
} else {
likes = 0;
imageLike.setAlpha(0);
}
imagePass.setAlpha(0);
} else {
//Rotation
relView.setRotation((float) ((x_cord - screenCenter) * (Math.PI/32)));
if (x_cord < (screenCenter/2)) {
imagePass.setAlpha(1);
if (x_cord < screenCenter/4) {
likes = 1;
} else {
likes = 0;
}
} else {
likes = 0;
imagePass.setAlpha(0);
}
imageLike.setAlpha(0);
}
break;
//if pictures moved up, picture were dropped to the primary position
case MotionEvent.ACTION_UP:
x_cord = (int) event.getRawX();
y_cord = (int) event.getRawY();
Log.e("X Point", "" + x_cord + " , Y " + y_cord);
imagePass.setAlpha(0);
imageLike.setAlpha(0);
//if like 0 nothing happens
if (likes == 0) {
Log.e("Event Status", "Nothing");
relView.setX(40);
relView.setY(40);
relView.setRotation(0);
//if like == 1 destroy RelativeLayout with the picture
} else if (likes == 1) {
Log.e("Event Status", "Passed");
imgContainer.removeView(relView);
} else if (likes == 2) {
//check and creat list
if (likeImageList == null) {
likeImageList = new ArrayList<>();
}
//add picture to list
LikedImage likedImage = new LikedImage();
likedImage.img = (BitmapFactory.decodeResource(getResources(), imageList[finalI]));
//save image as file
saveImageToExternalStorage(likedImage.img);
likeImageList.add(likedImage);
Log.e("Event Status", "Liked");
Log.e("Groeße der Liste", "" + likeImageList.size());
imgContainer.removeView(relView);
}
break;
default:
break;
}
return true;
}
});
imgContainer.addView(relView);
}
Sie müssen das Bild zuerst von der URL herunterladen dann nur Sie können es in Bildansicht setzen. – GrIsHu