首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在web中使用图像形成网格视图时出现问题

在web中使用图像形成网格视图时出现问题
EN

Stack Overflow用户
提问于 2011-05-18 23:33:22
回答 2查看 263关注 0票数 0

在我的应用程序中,我试图从存储在web中的xml文件中形成一个网格视图。

以下是我的代码

代码语言:javascript
复制
grid = (GridView)findViewById(R.id.gridView1);
imageXMLfn();
grid.setAdapter(new ImageAdapter(this));

private void imageXMLfn() 
    {
        try
        {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setIgnoringComments(true);
            factory.setCoalescing(true); 
            factory.setNamespaceAware(false); 
            factory.setValidating(false);

            DocumentBuilder parser = factory.newDocumentBuilder();             
            URL url = new URL(UserManual.IMAGE_URL);
            Log.e("ViewImage3",""+UserManual.IMAGE_URL);

            Document document= parser.parse(new InputSource(url.openStream()));            
            NodeList sections = document.getElementsByTagName("application");
            numSections = sections.getLength();
            for (int i = 0; i < numSections; i++) 
            {
                Element section = (Element) sections.item(i); 
                if(section.hasChildNodes()==true)
                {
                    NodeList section1=section.getChildNodes();
                    for(int j=0;j<section1.getLength();j++)
                    {
                        if(section1.item(j).hasChildNodes()==true)
                        {
                             for(int k=0;k<section1.item(j).getChildNodes().getLength();k++)
                             {                  
                                 xmlvalue=String.valueOf(section1.item(j).getChildNodes().item(k).getNodeValue()).trim(); 
                                 arl.add(xmlvalue);
                             }
                         }
                     }
                  }
               }
            } 
            catch(Exception e)
            {   
                System.out.println(e);
                Log.e("ViewImage Error1",e.getMessage());
            }

            Iterator<String> itr = arl.listIterator();
            int z=0,x=0,increment=0;
              while (itr.hasNext()) 
              {
                id = itr.next();
                img = img+id;
                z++;
              }           
    }


public class ImageAdapter extends BaseAdapter 
    {
        private Context myContext;

        private String[] myRemoteImages = {id};

        public ImageAdapter(Context c)
        { 
            this.myContext = c; 
        }
}

要么我只能得到存储在该url中的第一张图像,要么我不会得到任何其他图像。

以下是我试图从中获取图像的链接

代码语言:javascript
复制
http://94.23.207.167/websiteIphone/Admin/XML/Santa.xml
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-08 16:09:39

你的代码并不完整,所以很难给出一个确切的答案,但是在while循环的末尾,如果你赋值的是imageXMLfn,那就是id = it.next()。然后,图像适配器只使用id,它被设置为迭代器中的最后一个值。假设arlArrayList<String>类型的类中的一个字段,它可能可以通过以下方法解决:

代码语言:javascript
复制
public class ImageAdapter extends BaseAdapter 
{
    private Context myContext;

    private String[] myRemoteImages = arl.toArray(new String[arl.size()]);

    public ImageAdapter(Context c)
    { 
        this.myContext = c; 
    }
}

但是,您的代码在这方面确实不完整,所以我不确定这是否会起作用。

票数 0
EN

Stack Overflow用户

发布于 2012-04-27 00:13:50

对于同样的问题,我发现的最多的是这个。懒惰地在后台加载你的图片。在onpostexecute中,根本不显示任何图像,因为当抛出屏幕时,当前显示就会像多媒体幻灯片一样变得疯狂,图像会时断时续地闪烁,可能会错误地更新。然后我发现,如果对gridview变量执行Fling检测,例如:

代码语言:javascript
复制
                mPhotoView.setOnScrollListener(new OnScrollListener() {      

        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            // TODO Auto-generated method stub

        }

        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub
            if(scrollState != SCROLL_STATE_IDLE) {
              mAdapter.setFlinging(true);
            } else {
              mAdapter.setFlinging(false);   
            }

            int first = view.getFirstVisiblePosition(); 
            int count = view.getChildCount(); 

            if (scrollState == SCROLL_STATE_IDLE || (first + count >    
                                mAdapter.getCount()) ) { 
                mPhotoView.invalidateViews(); 
            }

        } 
    }); 

invalidateViews将刷新新下载的图像。此外,在调用Lazy后台加载器时,在进程启动后,我加载了一个占位符位图。我现在只需要找到一种方法来获取一些剩余的占位符图像,这些图像不知何故会在一些卷轴上找到方法,以便在图像可用时进行更新。Lazy Loaders在互联网上随处可见,他们认为这是一种比上面的代码更好的加载远程图像的方法。这是Androider试图完成的最棘手的事情之一。我花的时间和我遇到的所有其他“陷阱”一样长。希望这能帮你理清头绪。祝你编码愉快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6047284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档