【发布时间】:2013-03-07 04:30:00
【问题描述】:
我是新来的 Android 开发人员。
我正在尝试使用ViewPager 制作幻灯片。
这是我的主要活动:
public class HomeActivity extends AbstractActivity {
ArrayList<ImageView> imagens = new ArrayList<ImageView>();
ViewPager slideshow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
slideshow = (ViewPager) findViewById(R.id.slideshow);
// inicia a task json
new aTask(this).execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_home, menu);
return true;
}
public void getResult(String result) {
Gson gson = new Gson();
Home home = gson.fromJson(result, Home.class);
imagens = new ArrayList<ImageView>();
for (Webdoor webdoor : home.webdoors) {
try {
ImageView img = new ImageView(getApplicationContext());
Bitmap bitmap = BitmapFactory
.decodeStream((InputStream) new URL(webdoor.imagem)
.getContent());
img.setImageBitmap(bitmap);
imagens.add(img);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private class aTask extends AsyncTask<Void, Void, ArrayList<ImageView>> {
private HomeActivity homeActivityRef;
public aTask(HomeActivity homeActivity) {
this.homeActivityRef = homeActivity;
}
// inicio da task
@Override
protected void onPreExecute() {
}
// execução da tarefa em background
@Override
protected ArrayList<ImageView> doInBackground(Void... params) {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(
new StringHttpMessageConverter());
String result = restTemplate.getForObject(
"http://api.modahub.com.br/home", String.class,
"SpringSource");
Gson gson = new Gson();
Home home = gson.fromJson(result, Home.class);
ArrayList<ImageView> imagens = new ArrayList<ImageView>();
for (Webdoor webdoor : home.webdoors) {
try {
ImageView img = new ImageView(getApplicationContext());
Bitmap bitmap = BitmapFactory
.decodeStream((InputStream) new URL(webdoor.imagem)
.getContent());
img.setImageBitmap(bitmap);
imagens.add(img);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
publishProgress(); // invoca o onProgressUpdate()
return imagens;
}
// callback invocado pelo publishProgress()
@Override
protected void onProgressUpdate(Void... values) {
}
// callback executado no final da task
@Override
protected void onPostExecute(ArrayList<ImageView> aImagens) {
// This variable aImagens is full of images!
// How I put this on the screen =(
}
}
}
如何使onPostExecute() 中的ImageViews 列表在屏幕上呈现?
我需要Fragment 还是Loader?
【问题讨论】:
-
首先,您多次初始化变量
imagens...您不想这样做。其次,我没有看到你在哪里声明了你想要显示的变量aImagens -
aImagens在onPostExecute中作为方法参数出现。 -
@R.J 错过了,抱歉
标签: android json arraylist android-asynctask android-imageview