我们如何在网格视图中动态添加来自webservice的20个图像

时间:2011-04-21 04:21:26

标签: android

我想在一个页面上显示20个图像,然后在单击下一个按钮时,我将在同一页面上显示另一个图像。 这意味着,就像在电子邮件程序中一样,我们有“老”和“ “最老的”点击“较旧”我们会收到下一封电子邮件。 同样地,我想通过XML Parser来获取图像。

GridView gView = (GridView)findViewById(R.id.gridview);
btnNext = (Button)findViewById(R.id.btnNext);
btnPrevious = (Button)findViewById(R.id.btnPrevious);
adap = new EfficientAdapter(this);
gView.setAdapter(adap);

btnNext.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        adap.notifydatasetchanged();/*asking for create notifydatasetchanged()*/

        EfficientAdapter adap = new EfficientAdapter(this);/* shows the error and asking for create constructor  EfficientAdapter(OnClickListener)*/
        gView.setAdapter(adap);
    }
});

2 个答案:

答案 0 :(得分:0)

首先,如果你想在一起解析XML中的所有图像并显示它们,那将是一个床方法,而是让你的服务器文件处理这个,即每次你点击一个url它应该返回你20条记录。 例如

String urlToHit=Config.basicUrl+"serverfile.php?showperpage="+Config.showPerPage+"&pageindex="+Config.currentPage;  

其中showPerPage是每页所需的记录数,currentPage是页面的索引(对于每个新页面,它将递增)。 现在假设您有一个按钮,现在 onClick of button 解析网址(点击网址)并调用setAdapter:

gridview.setAdapter(new ImageAdapter(getApplicationContext()));

通过BaseAdapter的getCount()返回20。

希望这能解决您的问题。

答案 1 :(得分:0)

您在代码中标记的错误(EfficientAdapter adap = new EfficientAdapter(this);)是因为this在该回调的上下文中引用了new OnClickListener,而不是视图。

你可以创建一个新的EfficientAdapter adap = new EfficientAdapter(v);,或者更好的方法,重用你之前创建的那个:

删除两行

   EfficientAdapter adap = new EfficientAdapter(this);/* shows the error and asking for create constructor  EfficientAdapter(OnClickListener)*/
    gView.setAdapter(adap);

并使用onClick callBack向服务器询问接下来的20张图片。将这些图像填​​充到适配器,然后adap.notifyDataSetChanged()(请注意大写)“通知附加的视图,基础数据已更改,并且应自行刷新。”