【问题标题】:GridView item not changing when value is changed更改值时,GridView 项目不会更改
【发布时间】:2014-02-12 08:47:40
【问题描述】:

我有这门课

public class Item {
    String image;
    String accesslevel;
    String username;
    String userjob;
    String usercompany;
    String usermail;
    Boolean etat;
    int userapartid;
    public Item(String image, String username, String userjob, String usercompany, String usermail,int userapartid,Boolean etat,String accesslevel) {
        super();
        this.userapartid=userapartid;
        this.image = image;
        this.username = username;
        this.userjob = userjob;
        this.usercompany = usercompany;
        this.usermail = usermail;
        this.etat=etat;
        this.accesslevel=accesslevel;
    }
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }
    public String getusername() {
        return username;
    }
    public void setusername(String username) {
        this.username = username;
    }
    public String getusercompany() {
        return usercompany;
    }
    public void setusercompany(String usercompany) {
        this.usercompany = usercompany;
    }
    public String getuserjob() {
        return userjob;
    }
    public void setuserjob(String userjob) {
        this.userjob = userjob;
    }
    public String getusermail() {
        return usermail;
    }
    public void setusermail(String usermail) {
        this.usermail = usermail;
    }
    public Boolean getetat() {
        return etat;
    }
    public void setetat(Boolean etat) {
        this.etat = etat;
    }

    public int getuserapartid() {
        return userapartid;
    }
    public void setuserapartid(int userapartid) {
        this.userapartid = userapartid;
    }


    public String getaccesslevel() {
        return accesslevel;
    }
    public void setaccesslevel(String accesslevel) {
        this.accesslevel = accesslevel;
    }

}

我的主应用程序中有一个由 Item 填充的 GridView 和一个包含该项目的数组列表

gridArray2 = new ArrayList<Item>();

for(int i=0;i<gridArray.size();i++){                                             
     __Item = new Item(gridArray.get(i).getImage(),gridArray.get(i).getusername(),gridArray.get(i).getuserjob(),gridArray.get(i).getusercompany(),gridArray.get(i).getusermail(),gridArray.get(i).getuserapartid(),gridArray.get(i).getetat(),gridArray.get(i).getaccesslevel());



gridArray2.add(__Item);

       }
 customGridAdapter = new CustomGridViewAdapter(MainActualite.this, R.layout.row_grid_access, gridArray2);
gridView.setAdapter(customGridAdapter);

我的问题是当我这样做时:

gridView2.get(2).setetat(true);

item中etat的值没有改变。请问如何更改数组列表中项目的值??

谢谢!

【问题讨论】:

  • 在那之后你打电话给customGridAdapter.notifyDataSetChanged();了吗?
  • gridView2 变量是什么?向我们展示您在哪里以及如何改变这一点
  • 你确定你试过gridView2.get(2).setetat(true);而不是gridArray2.get(2).setetat(true)
  • 根据当前发布的代码,您的gridArray2 是一个空列表。这个语句gridView2.get(2).setetat(true); 会产生任何异常吗?

标签: java android gridview arraylist


【解决方案1】:

当您更改提供给适配器的数据时(在这种情况下,您正在更新 GridArray2,它正在为 customGridAdapter 提供数据),您始终需要确保调用 notifyDataSetChanged() 以让适配器为您的GridView 知道底层数据集已更改。

更多关于这个功能的信息可以在这里找到:http://developer.android.com/reference/android/widget/ArrayAdapter.html#notifyDataSetChanged()

【讨论】:

    【解决方案2】:

    基本上,要更新 gridview 中的数据,您必须更新数据对象(可以是数组、列表或其他东西。但通常是列表)。更改内容(比如说,一个列表)后,您必须致电customGridAdapter.notifyDataSetChanged();

    无论如何,您不需要重新实例化您的适配器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多