如何刷新我的gridView?

2024-01-04

我有一个ListView。当我单击列表视图行的按钮时,将在列表中创建一个按钮main.xml,我有onclicklistener自定义 listView 适配器中的按钮。我正在 sqlite 中保存该按钮的点击,并通过该 sqlite 我正在更新 gridview 适配器。

所以我的问题是当我点击按钮时GridView不会自行更新,当我关闭应用程序并再次打开它时,它会更新。

我尝试使用notifydatasetchanged()但没有用..

这是自定义列表视图适配器中的代码

holder.checkbox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             String text = holder.tvName.getText().toString();
             String image = holder.tvimageurl.getText().toString();
             DatabaseHandler db = new DatabaseHandler(activity);
             db.addContact(new Contact(text, image));  
             db.close();

这在主要活动中

    GridView listView = (GridView) findViewById(R.id.gridview1);
    imgAdapter = new ImageAdapter(this);
    listView.setAdapter(imgAdapter);
    imgAdapter.notifyDataSetChanged();

图像适配器代码。

public class ImageAdapter extends BaseAdapter {

    Activity activity;
    List<Contact> item;
    LayoutInflater inflater;
    ImageAdapter imgAdapter;
    private DisplayImageOptions options;
    private DisplayImageOptions options2;
    ImageLoader imageLoader;
    private Contact objBean;
    String getUrl,getId;
    ObjectOutputStream oos;
    FileOutputStream fos;



    public ImageAdapter(Activity act) {
        this.activity=act;

        inflater = act.getLayoutInflater();


        DatabaseHandler db = new DatabaseHandler(activity);
        item = db.getAllContacts();
        db.close();
}

    @Override
    public int getCount() {
        return item.size();
    }

    @Override
    public Contact getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final LinearLayout imageView;
        if (convertView == null) {
            imageView = (LinearLayout)        inflater.inflate(R.layout.item_grid_image, parent, false);
        } else {
            imageView = (LinearLayout) convertView;
        }

您可以强制Adapter在您的内部更新自身onClick方法例如

public void onClick(View v) {
    String text = holder.tvName.getText().toString();
    String image = holder.tvimageurl.getText().toString();
    DatabaseHandler db = new DatabaseHandler(activity);
    db.addContact(new Contact(text, image));
    db.close();
    notifyDataSetChanged(); // This will do the trick
 }

EDIT

当您重新启动时获取数据,这意味着它肯定已保存在数据库中,这表明当您使Adapter它不会重新加载数据库。尝试类似自定义方法的东西ImageAdapter像这样:

public void onClick(View v) {
    String text = holder.tvName.getText().toString();
    String image = holder.tvimageurl.getText().toString();
    DatabaseHandler db = new DatabaseHandler(activity);
    db.addContact(new Contact(text, image));
    db.close();
    reloadData();  // will refresh the data
    notifyDataSetChanged(); // will update the contents
 }

private void reloadData() {
    DatabaseHandler db = new DatabaseHandler(activity);
    item = db.getAllContacts();
    db.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何刷新我的gridView? 的相关文章

随机推荐

  • 在不影响目标c质量的情况下缩小图像

    如何以编程方式缩小图像而不影响质量 捕获图像后 我想减小该图像的大小而不改变 Objective c 中的质量 这是我用来压缩图像的代码 Code UIImage compressImage UIImage image NSData img
  • 压缩包含许多重复文件的文件夹[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个相当大的文件夹 10GB 其中在整个目录树中包含许多重复的文件 其中许多文件重复了 10 次 重复的文件不是并排存在 而是位于不同
  • 如何通过 IntelliJ 运行/调试配置运行 wdio?

    我可以使用命令行运行测试 gt node modules bin wdio wdio conf js 但是 如果我尝试从 IntelliJ 的运行 调试配置运行它 我会收到各种不同的错误 功能文件或目录 path to my feature
  • WebView setDefaultZoom 已弃用

    这是设置webview默认缩放的代码 mWebView getSettings setDefaultZoom WebSettings ZoomDensity FAR 工作但老了 这setDefaultZoomvalue 已弃用 有人知道新代
  • 从另一个活动更改一个活动的背景

    示例 我有 3 个活动 活动 1 活动 2 和活动 3 Activity1 包含一个按钮 单击该按钮可以更改 Activity2 和 Activity3 的背景 这可能吗 如果是的话怎么办 我对使用该方法有一个想法 example for
  • 如果 rxjs 仍在加载数据,如何返回数据或等待

    我有一个服务 它使用 Observable 在其构造函数中加载一些数据 然后在稍后的某个时间可以使用 getter 检索数据 如果数据存在 它应该立即返回数据 或者等待加载完成 如果仍在进行中 我想出了以下示例 代码在 Typescript
  • R Shiny 应用程序中的“下一步”按钮

    我正在尝试使用 Shiny 构建一个逐步的应用程序 我的目标是创建一个由数据库中编写的一堆问题组成的考试 我需要的是一个 下一步 按钮 当您单击另一个问题时会显示该按钮 我一直在尝试使用 操作按钮 但它只是第一次起作用 也就是说 第一次单击
  • 从 C++11 中的 std::exception 派生时的异常规范

    我有一个异常类如下 include
  • Gridster 的替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我已经用过Gridster http gridster net 使用拖放多列网格的项目的库 遗憾的是
  • Angular HttpPromise:“success”/“error”方法和“then”参数之间的区别

    根据AngularJS 文档 http docs angularjs org api ng 24http 调用 http返回以下内容 返回一个promise符合标准的对象then方法和两个http具体方法 success and error
  • 如何自定义条形注释以不显示所选值

    我有以下数据集 data 6 92 1 78 0 0 0 0 3 5 8 82 3 06 0 0 0 0 5 54 10 8 6 03 0 0 0 0 6 8 13 69 8 61 9 98 0 0 9 42 4 91 3 54 2 62
  • Rails 生成迁移未将 :null => false 设置为created_at 和updated_at

    我创建了一个全新的 Rails 应用程序 生成一些脚手架和一些模型 经过几次测试后 我意识到 t timestamps 生成的列不包含 传统 null gt false 选项 我需要这种行为 我看不出这是做什么的 我重新创建了一个新应用程序
  • 自定义列的 ExecuteStoreQuery

    我正在尝试运行自定义查询并且正在使用实体框架 我尝试了这个 string query SELECT dm DistrictName sm SchoolName u UserId u FirstName u LastName sa Stude
  • 用于识别 2D 特征的图像处理

    我创建了一个 iPhone 应用程序 它可以扫描一张方格纸的图像 然后告诉我哪些方块已被涂黑 哪些方块是空白的 我通过从左到右扫描并使用方格纸的线条作为指导来完成此操作 当我遇到方格纸线时 我开始寻找黑色 直到再次碰到方格纸线 然后 我不再
  • 随机数生成器的实现[重复]

    这个问题在这里已经有答案了 可能的重复 随机数生成器如何工作 https stackoverflow com questions 1716308 how does a random number generator work 我正在寻找 C
  • NodeJS:与 PHP 集成

    我听说 Node JS 非常适合制作实时聊天应用程序 我想在我的网站上实现聊天 现在我只有设计 所以我现在必须编写后端代码 但是当我使用时socket io express它并没有像它应该的那样工作 代码来自server js var ap
  • 通过 http 加载数据之前 angular2 kendo ui 网格的 busyindicator

    我正在使用 angular2 kendo ui 网格并通过 http 调用将数据绑定到网格 在http调用返回数据之前 我需要显示忙碌指示器 而不显示网格标题 直到分配数据 如何实现此目的 谢谢 拉古斯 我通过在 HTML 模板中声明以下内
  • 创建静态资源字典

    我创建了一个资源字典 希望将其与多个用户控件 xaml 文件合并 我只想创建此资源字典的一个实例 知道如何做到这一点吗 注意 合并应该仅通过 xaml 进行 而不是通过代码进行 感谢和问候 维沙尔 这个怎么样 class Dictionar
  • 在 JavaFX 的 FXML 文件中指定 ResourceBundle

    可以设置一个ResourceBundle在 Java 类中使用下面的代码 FXMLLoader loader new FXMLLoader getClass getResource my view fxml loader setResour
  • 如何刷新我的gridView?

    我有一个ListView 当我单击列表视图行的按钮时 将在列表中创建一个按钮main xml 我有onclicklistener自定义 listView 适配器中的按钮 我正在 sqlite 中保存该按钮的点击 并通过该 sqlite 我正