【问题标题】:Dynamical change of ImageViewImageView的动态变化
【发布时间】:2016-04-02 13:12:34
【问题描述】:

我有从互联网端获取图像的代码在指定的 ImageView 中使用它。当我需要将图像分配到不同的 ImageView 时,就会出现问题。我正在向这个函数 url 和 (int) i 发送两个参数。使用它们,我需要根据 i 的值(0,1 或 2)将该图像分配给 R.id.eventsImage0、R.id.eventsImage1 或 R.id.eventsImage2。我的代码是:

 private class LoadImagefromUrl extends AsyncTask< Object, Void, Bitmap > {
        ImageView ivPreview = (ImageView) pwindo.getContentView().findViewById(R.id.eventsImage0);

        @Override
        protected Bitmap doInBackground( Object... params ) {
           // this.ivPreview =
            String url = (String) params[0];
            int i  = (int) params[1];
            System.out.println(url);
            return loadBitmap( url );
        }
        @Override
        protected void onPostExecute( Bitmap result ) {
            super.onPostExecute( result );
            ivPreview.setImageBitmap( result );
        }
    }
    public Bitmap loadBitmap( String url ) {
        URL newurl = null;
        Bitmap bitmap = null;
        try {
            newurl = new URL( url );
            bitmap = BitmapFactory.decodeStream( newurl.openConnection( ).getInputStream( ) );
        } catch ( MalformedURLException e ) {
            e.printStackTrace( );
        } catch ( IOException e ) {
            e.printStackTrace( );
        }
        return bitmap;
    }

【问题讨论】:

  • 你是说R.drawable.eventsImageN
  • 不,R.id.eventsImageN,因为我在 xml 文件中创建了三个具有此类名称的 ImageView。我不知道其他方式
  • 你怎么称呼你的LoadImagefromUrl班级
  • new LoadImagefromUrl().execute(text,i);我这样称呼它

标签: android dynamic imageview


【解决方案1】:

尝试扩展您为任务提供的内容(目前只是一个用于 th url 的字符串)。这是一个例子:

private class LoadImagefromUrlModel {
    final int viewId;
    final String url;
    Bitmap bitmap;

    /**
     *
     * @param url the url
     * @param viewId the id of the imageview to display the loadded bitmap
     */
    public LoadImagefromUrlModel(String url, int viewId) {
        this.url = url;
        this.viewId = viewId;
    }
}

private class LoadImagefromUrl extends AsyncTask< LoadImagefromUrlModel, Void, LoadImagefromUrlModel > {

    @Override
    protected LoadImagefromUrlModel doInBackground( LoadImagefromUrlModel... params ) {
        LoadImagefromUrlModel model = params[0];
        // load the bitmap
        model.bitmap = loadBitmap( model.url );
        return model;
    }
    @Override
    protected void onPostExecute( LoadImagefromUrlModel result ) {
        super.onPostExecute(result);
        // find the imageview
        ImageView ivPreview = (ImageView) pwindo.getContentView().findViewById(result.viewId);
        if (ivPreview != null) {
            ivPreview.setImageBitmap(result.bitmap);
        }
    }
}

public Bitmap loadBitmap( String url ) {
    URL newurl = null;
    Bitmap bitmap = null;
    try {
        newurl = new URL( url );
        bitmap = BitmapFactory.decodeStream( newurl.openConnection( ).getInputStream( ) );
    } catch ( MalformedURLException e ) {
        e.printStackTrace( );
    } catch ( IOException e ) {
        e.printStackTrace( );
    }
    return bitmap;
}

然后像这样调用,所以

new LoadImagefromUrl().execute(new LoadImagefromUrlModel("someurl", R.id.eventsImage));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 2019-04-10
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    相关资源
    最近更新 更多