Ich habe eine String-Ressource mit URLs zu einer Reihe von Bildern im jpg-Format als String-Array-Ressource in string.xml. Ich versuche, diese Bilder dynamisch zur Aktivität hinzuzufügen. Ich habe zuerst versucht, nur Textansichten der Links zu der Aktivität hinzuzufügen, und das hat funktioniert. Aber wenn ich versuche, die Bilder hinzuzufügen, gab es mir eine android.os.NetworkOnMainThreadException. Um dies zu beheben, habe ich eine Async-Aufgabe hinzugefügt, die jedoch immer noch nicht funktioniert hat. Bitte sag mir, was ich falsch mache. Ich bin sehr neu in der Android-Programmierung, also bitte vergib mir, wenn das eine dumme Frage ist. Dies ist der Code, den ich bisher für diese:So fügen Sie Bilder aus einem String-Array von URLs dem dynamischen Scrollview-Layout einer Aktivität dynamisch hinzu
package com.example.testgallery;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
public class Gallery extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
List<String> pictures = Arrays.asList(getResources().getStringArray(R.array.gallery_2014));
LinearLayout piclayout = (LinearLayout) findViewById(R.id.gallery_preview_scroll_layout);
for(int x=0;x<pictures.size();x++) {
String url = pictures.get(x);
TextView urlview = new TextView(this);
urlview.setText(url);
piclayout.addView(urlview);
try {
new getPictures().execute(url);
} catch (Exception e) {
Log.d("Picture Error",e.toString());
}
}
}
public void addImage(InputStream is){
Drawable d = Drawable.createFromStream(is, "Picture");
ImageView image = new ImageView(Gallery.this);
image.setImageDrawable(d);
LinearLayout piclayout = (LinearLayout) findViewById(R.id.gallery_preview_scroll_layout);
piclayout.addView(image);
}
class getPictures extends AsyncTask<String, Void, InputStream> {
private Exception exception;
protected InputStream doInBackground(String... urls) {
InputStream is = null;
for(String url : urls) {
try {
is = (InputStream) new URL(url).getContent();
} catch (Exception e) {
Log.d("Picture Error", e.toString());
}
}
return is;
}
protected void onPostExecute(InputStream is) {
addImage(is);
}
}
}