ハッシュタグを使ってTwitter上の画像を検索し、自分のアプリケーション内に画像を表示するコードを書きました。URLをImageViewに挿入する方法は?
ここに私の構造。私はSearchViewを持っています。ユーザーがSearchViewにテキストを入力すると、Twitter4j QueryはそれをTwitter上で検索します。次に、結果からイメージのURLを解析します。
今質問します。どのようにURLからの画像を表示するには、URLからの画像をimageViewに置くことができますか?
ここに私のコード:
/* 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();
}
更新
ねえ皆さん、すべてのあなたの答えやヒントについて
おかげで多くのことを。今、私は知っている、どのようにURLから画像を取得するが、私はまだ私のimageViewに表示するための問題があります。私は好き嫌いのためにそれらをスライドさせる写真のスタックを実装したい。だから私はそれぞれのアイテムの内部にrelativeLayoutとimageViewを作成するループを作ります。今私はURLから画像をimageViewに入れようとしましたが、うまくいきませんでした。アプリが起動し、白い画面しか表示されません。ここで
は私のコードです:
//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);
}
最初にURLから画像をダウンロードする必要があります。その後、画像ビューにのみ設定することができます。 – GrIsHu