我想在一个页面上显示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);
}
});
答案 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()
(请注意大写)“通知附加的视图,基础数据已更改,并且应自行刷新。”