Android 如何渲染ArrayList<;ImageView>;从onPreExecute()中的异步任务获取?

Android 如何渲染ArrayList<;ImageView>;从onPreExecute()中的异步任务获取?,android,json,arraylist,android-asynctask,android-imageview,Android,Json,Arraylist,Android Asynctask,Android Imageview,我是新来的,是Android开发人员 我正在尝试使用ViewPager制作幻灯片库 这是我的主要活动: public class HomeActivity extends AbstractActivity { ArrayList<ImageView> imagens = new ArrayList<ImageView>(); ViewPager slideshow; @Override protected void onCreate(B

我是新来的,是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 =(
        }
    }
}
公共类HomeActivity扩展了AbstractActivity{
ArrayList imagens=新的ArrayList();
浏览页面幻灯片;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
slideshow=(ViewPager)findViewById(R.id.slideshow);
//伊妮西亚:一项任务
新建aTask(this.execute();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.activity\u home,menu);
返回true;
}
public void getResult(字符串结果){
Gson Gson=新的Gson();
Home-Home=gson.fromJson(结果,Home.class);
imagens=新的ArrayList();
用于(Webdoor Webdoor:home.webdoors){
试一试{
ImageView img=新的ImageView(getApplicationContext());
位图位图=位图工厂
.decodeStream((InputStream)新URL(webdoor.imagem)
.getContent());
设置图像位图(位图);
imagens.add(img);
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
私有类aTask扩展异步任务{
私人家庭活动homeActivityRef;
公共aTask(家庭活动家庭活动){
this.homeActivityRef=homeActivity;
}
//伊尼西奥达任务
@凌驾
受保护的void onPreExecute(){
}
//塔雷法执行委员会
@凌驾
受保护的ArrayList doInBackground(无效…参数){
RestTemplate RestTemplate=新RestTemplate();
restTemplate.getMessageConverters().add(
新的StringHttpMessageConverter());
字符串结果=restTemplate.getForObject(
"http://api.modahub.com.br/home“,String.class,
“SpringSource”);
Gson Gson=新的Gson();
Home-Home=gson.fromJson(结果,Home.class);
ArrayList imagens=新的ArrayList();
用于(Webdoor Webdoor:home.webdoors){
试一试{
ImageView img=新的ImageView(getApplicationContext());
位图位图=位图工厂
.decodeStream((InputStream)新URL(webdoor.imagem)
.getContent());
设置图像位图(位图);
imagens.add(img);
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
publishProgress();//invoca o onProgressUpdate()
返回图像;
}
//回调invocado pelo publishProgress()
@凌驾
受保护的void onProgressUpdate(void…值){
}
//回调执行器不执行最终da任务
@凌驾
PostExecute上受保护的void(ArrayList aImagens){
//这个变量aImagens充满了图像!
//我是怎么把这个放在屏幕上的=(
}
}
}
如何使
onPostExecute()
中的
ImageView
s列表在屏幕中呈现?
如果要在ViewPager.com中创建ImageGallery,是否需要
片段
加载程序

所有图像都绑定到一个适配器中,如果要在ViewPager.com中创建ImageGallery,可以在View pager中绑定适配器请参见


将所有图像绑定到ImageView中的所有图像都绑定到一个适配器中,您可以在View pager中绑定适配器请参见

首先,您多次初始化变量
imagens
,但您不想这样做。其次,我看不到您在何处声明要显示的变量
aImagens
,该变量在e
onPostExecute
@R.J忽略了这一点,对不起,首先,您多次初始化变量
imagens
,但您不想这样做。其次,我看不到您在何处声明要显示的变量
aImagens
,它作为
onPostExecute
@R.J missed t中的方法参数hat,Sorry在此链接中,适配器使用本地资源创建了一个视图。我的问题是,我的资源位于json中,我只能在asynctask中使用该json…但您可以在adapter和setposition中创建ArrayList,然后创建多个imageview。在此链接中,适配器使用本地资源创建了一个视图。我的问题是,我的资源位于我只能在asynctask中使用的json…但是您可以在adapter和setposition中创建ArrayList,然后创建多个imageview。