Android GridView - 根据位置更新View

时间:2010-02-07 17:10:21

标签: android gridview

我有一个GridView,使用自定义适配器(myAdapter扩展BaseAdapter),其中网格中的每个项目都包含一个ImageButton。 getView()工作正常。

但是,从我的代码中的其他地方开始,如何根据GridView中的位置更新网格中某个特定项目的图像(setImageResource)?

到目前为止,我已将此添加到我的适配器类:

public void changeImage() {
        Log.d(TAG, "Image change");
        this.ImageButton.setImageResource(R.drawable.newImage);
}

并且想写这样的东西:mygridview.getItemIdAtPosition(20).changeImage();(不编译)。

3 个答案:

答案 0 :(得分:3)

如果你想更新网格中某个特定项目的图像,你可以做的是......为网格中的所有图像都有一个onClickListener。

现在,当您点击任意图像时,获取图像的位置并更改该特定图像的背景资源。

示例:

添加图片时: imageView.setOnClickListener(imageListener);

听众会像dis:

private OnClickListener imageListener = new OnClickListener() {
        public void onClick(View v) {
            int id = v.getId();
            ImageView imgView = imageArray.get(id);
            imgView .setBackgroundResource(R.drawable.newImage);
    };

我希望你觉得它有用。

答案 1 :(得分:3)

如果GridView中的图像我做了这个,它也有效:

gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View imgView, int position, long id) {
    ImageView imageView = (ImageView) imgView;
    imageView.setImageResource(R.drawable.newImage);
        }
    });    }

答案 2 :(得分:0)

这也是我的最后一个问题。在这里我的解决方案我使用数据模型和适配器为我的RecyclerView       首先,将新数据注册到您的模型

  DataModel detail = new DataModel(id, name, sat, image);

之后,使用set将旧值替换为新值

  mData.set(index, detail);

最后,刷新适配器

  if(adapter!=null)
  adapter.notifyItemChanged(index);