将数据库中的数据显示到 Android 的 listView

2024-01-24

我试图将数据库中的所有数据显示到列表视图中

创建数据库的代码:

数据处理程序

package com.example.testingforstack;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataHandler {
    public static final String NAME = "name";
    public static final String EMAIL = "email";
    public static final String TABLE_NAME = "mytable";
    public static final String DATA_BASE_NAME = "mydatabase";
    public static final int DATABASE_VERSION = 1;
    public static final String TABLE_CREATE = "create table mytable (name text not null, email text not null);";

    DataBaseHelper dbhelper;
    Context ctx;
    SQLiteDatabase db;

    public DataHandler(Context ctx){
        this.ctx = ctx;
        dbhelper = new DataBaseHelper(ctx);
    }

    public static class DataBaseHelper extends SQLiteOpenHelper{

        public DataBaseHelper(Context ctx) {
            super(ctx, DATA_BASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db){
            try{
                db.execSQL(TABLE_CREATE);
            }catch (SQLException e){
                e.printStackTrace();
            }
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
            //db.execSQL("DROP TABLE IF EXISTS mytable");
            onCreate(db);
        }
    }

    public DataHandler open(){
        db = dbhelper.getReadableDatabase();
        return this;
    }

    public void close(){
        dbhelper.close();
    }

    public long insertData(String name, String email){
        ContentValues content = new ContentValues();
        content.put(NAME, name);
        content.put(EMAIL, email);
        return db.insertOrThrow(TABLE_NAME, null, content);
    }

    public Cursor returnData(){
        return db.query(TABLE_NAME, new String[] {NAME, EMAIL}, null, null, null, null, null); 
    }

}

mainActivity.java

package com.example.testingforstack;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    Button save, load;
    EditText name, email;
    DataHandler handler;
    String getName, getEmail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        save = (Button) findViewById(R.id.save);
        load = (Button) findViewById(R.id.load);
        name = (EditText) findViewById(R.id.name);
        email = (EditText) findViewById(R.id.email);

        save.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String getName = name.getText().toString();
                String getEmail = email.getText().toString();

                handler = new DataHandler(getBaseContext());
                handler.open();
                long id = handler.insertData(getName, getEmail);
                insertSuccess();
                //Toast.makeText(getBaseContext(), "Data inserted", Toast.LENGTH_LONG).show();
                handler.close();
            }
        });

        load.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                getName = "";
                getEmail = "";
                handler = new DataHandler(getBaseContext());
                handler.open();
                Cursor C = handler.returnData();
                if(C.moveToFirst()){
                    do{
                        getName = C.getString(0);
                        getEmail = C.getString(1);
                    }while(C.moveToNext());
                }
                handler.close();
                loadSuccess();
                //Toast.makeText(getBaseContext(), "Name: "+getName+", Email: "+getEmail, Toast.LENGTH_LONG).show();
            }
        });
    }

    public void insertSuccess()
    {
        AlertDialog.Builder insertData = new AlertDialog.Builder(this);

        insertData.setTitle("Info");
        insertData.setMessage("Data Inserted");
        insertData.setNegativeButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int value) {
                // TODO Auto-generated method stub
                arg0.dismiss();
            }
        });
        insertData.show();
    }

    public void loadSuccess()
    {
        AlertDialog.Builder loadData = new AlertDialog.Builder(this);

        loadData.setTitle("Info");
        loadData.setMessage("Name: "+getName+" & your email: "+getEmail);
        loadData.setNegativeButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int value) {
                // TODO Auto-generated method stub
                arg0.dismiss();
            }
        });
        loadData.show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

我有两个按钮save and load。我已成功实现保存按钮来保存用户名和电子邮件。但是,我真的不知道将数据加载到列表视图中。怎么做?


在列表视图中,您可以使用不同类型的适配器。对于数据库,最合适的是使用cursorAdapter 来告诉要使用哪个游标。您还可以手动遍历数据库中的元素并将它们保存在数组中的其他对象中,然后您可以使用 arrayAddapter 在其中传递对象数组。在每种情况下,您都必须设置活页夹或重写 onCreateView 方法,以告知哪个参数位于哪个子项中。

你可以看看这个http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html示例以获取更多信息。

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

将数据库中的数据显示到 Android 的 listView 的相关文章

  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • 扩展多个类

    我知道 Java 不支持多重继承 因为不允许扩展多个类 我只是想知道我的问题是否有解决方法 我有一个名为CustomAction需要扩展两个抽象类 BaseAction and QuoteBaseAction 我无法更改这些抽象类中的任何一
  • 为休息服务实施 JUnit 测试

    我必须为我的休息服务实现一些 JUnit 测试 例如 这是我的休息服务之一 Path dni fe public class HelloWorld POST Path home Consumes MediaType APPLICATION
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • BigDecimal汇总统计

    我有一个 BigDecimal 列表 List
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • Android 导航 DeepLinks - 如何区分使用导航操作进行导航与深层链接

    我有导航操作和深层链接 根据您导航的位置 将您带到某个片段 我想确定是使用了深层链接还是仅使用了导航操作 这正是KEY DEEP LINK INTENT https developer android com reference andro
  • 如何比较 Postgresql 中日期时间字段中的日期?

    在比较 postgresql Windows 中的版本 9 2 4 中的日期时 我遇到了一个奇怪的情况 我的表中有一列说update date与类型timestamp without timezone 客户可以仅使用日期搜索此字段 例如 2
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • log4j.properties 在 Wildfly 上无法正常工作

    我的类路径中有一个 log4j properties 文件 它位于 APP XX jar log4j properties 位置 我注意到在ear文件中我还可以在lib文件夹中找到log4j 1 2 17 jar 但无论我在 log4j p
  • 线程数组?

    所以我在理解如何避免线程的顺序执行时遇到了问题 我试图创建一个线程数组并在单独的循环中执行 start 和 join 函数 这是我现在拥有的代码示例 private static int w static class wThreads im
  • Android 模拟器提示和技巧 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 手动添加带有依赖pom/iml文件的aar

    由于我无法使用私人 Maven 来共享我的库 因此我正在考虑共享 aar 并导入到另一个项目中 当 aar 和 jar 文件不包含任何依赖项时 就会出现问题 因此 一旦我在android studio中手动导入aar 使用Import JA
  • 假布尔值=真?

    我在一本书中找到了这段代码 并在 Netbeans 中执行了它 boolean b false if b true System out println true else System out println false 我只是不明白为什
  • Android IntentService无法实例化类;没有空构造函数

    我有一个MainActivity需要访问在线 API 从而使用网络资源 的类 这需要我在单独的文件中创建的后台线程HttpRequestService java MainActivity java public class MainActi
  • 使用Gradle组装时如何更改Android应用程序包名称?

    是否可以使用 Gradle 更改 Android 应用程序的包名称 我需要编译同一应用程序的两个副本 并具有唯一的包名称 这样我就可以向市场发布两次 作为使用的更简单的替代方案产品口味 正如伊森的回答 https stackoverflow
  • FragmentMap + ActionBar 选项卡

    我一直在尝试插入一个MapView进入一个ActionBar Tab 但我什至无法解决问题 即使谷歌搜索 这是主要活动 Override public void onCreate Bundle savedInstanceState supe
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果

随机推荐

  • 显示 Visual Studio 代码中的所有警告和错误

    我正在使用 Visual Studio Code 版本 1 6 0 是否有可能显示当前根文件夹中所有文件的错误和警告 目前它仅显示打开文件的错误和警告 2019年更新 ESLint 在 VS Code 中引入了一项新任务 您必须在工作区设置
  • 使用 mschart 在数据点上设置标签

    我想自定义下面数据点上的标签 以便它们呈现为 使用图表上的第一个数据点作为示例 4 10 4 40 黄色类 数据点有一个可以通过编程方式设置的标签属性 DataPoint dp new DataPoint dp Label c Start
  • R XML 从同一节点选择 2 个属性 xmlAttrs()

    进一步推进 TEI 勘探 这是我的 XML Tei 文件 其中包含具有不同属性 时间 从 到 的 日期 节点 我已经使用成功提取了 when 属性的值 dateWhen lt unlist xpathApply doc date xmlGe
  • 情节内的情节

    我有情节1 curve exp x from 1 to 5 lwd 5 curve 150 exp x from 1 to 5 lwd 5 col darkblue add T 在其中我想添加以下情节 2 par mar c 7 7 1 1
  • 是否有任何理由不将 'git fetch' 设置为始终使用 --prune 选项?

    当远程计算机上的分支已被删除时 使用 git fetch prune 删除本地远程跟踪分支 使用以下命令将remote origin prune设置为true git config global fetch prune true 使得使用
  • Git 忽略除某个目录的所有子目录之外的所有特定类型的文件?

    我正在尝试创建一个 gitignore 文件 该文件将忽略所有 jar 文件 除非它们位于名为 libs 的文件夹中 这是我的基本文件结构 gitignore libs goodFile jar someFolder subFolder a
  • 如何在 firebase 托管中包含子目录

    我的网站由主页和文件夹内分隔的子页面组成 如何在我的页面主机中包含子页面 firebase 托管 弗兰克的评论确实是一个答案 Firebase 会在您指定的目录下部署所有内容 因此 如果您的主页 index html 位于当前目录中 而其他
  • TCP RST 数据包详细信息

    为什么 TCP RST 数据包不需要确认 是不是因为RST的发送方每次收到对方的数据包后都会继续发送RST 相关说明 有效的 RST 数据包中的确认号怎么可能是 0 相关说明 RST 数据包中的确认号如何 是 0 因为设置了 RST 位的段
  • 添加千分尺依赖项会导致奇怪的 Spring 代理问题

    我有一个带有私有 Scheduled 方法的简单 Spring Boot 应用程序 SpringBootApplication EnableScheduling public class DemoApplication public sta
  • 为什么 Random.nextLong 不能在 Java 中生成所有可能的 long 值?

    Random 类的 nextLong 方法的 Javadoc 指出 由于 Random 类仅使用 48 位的种子 因此该算法不会返回所有可能的长值 随机javadoc http docs oracle com javase 7 docs a
  • java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection

    我得到以下信息 java lang ClassCastException com mchange v2 c3p0 impl NewProxyConnection 当下面的代码执行时 你能帮我解决一下吗 ComboPooledDataSour
  • jQuery 动画颜色变化

    我正在尝试将链接颜色从当前颜色更改为其他颜色的动画 window load function article preview h1 a hover function this animate color ffffff 1500 由于某种原因
  • 比较两个日期时间

    label1显示我通过查询从数据库获取的最后交易日期 时间 label2是系统日期 时间 我有一个执行命令按钮的计时器 之后我想检查 label1 中的日期 时间是否小于 5 分钟 如果是这样的话我想展示一下按摩 但我不知道为什么我的代码无
  • 使用phonegap在android模拟器中调试javascript

    我是phonegap 和android 开发的新手 我可以知道如何在模拟器上调试 javascript 错误吗 我听说过 ADB 请问我如何在 Windows 7 系统上使用和安装它 我有一个使用 jsonp 调用的 ajax 但模拟器上没
  • 用标志交换存储库

    我有一个 IRepository 接口 其中包含许多 T 和多个实现 按需数据库 Web 服务等 我使用 AutoFac 为许多 T 注册 IRepository 具体取决于我想要为每个 T 指定的存储库类型 我还有一个基于 NET 缓存的
  • UnsupportedClassVersionError:WebSphere AS 7 中的 JVMCFRE003 错误主要版本

    我收到这个错误 java lang UnsupportedClassVersionError JVMCFRE003 错误的主要版本 类 地图 CareMonths 偏移 6 我的 Eclipse 的 Java 编译器设置为1 6我在 C P
  • 使用 Traefik 进行 SSL 直通

    我需要将 SSL 连接直接发送到后端 而不是在我的 Traefik 上解密 后端需要接收https请求 我尝试了 traefik frontend passTLSCert true 选项 但在访问我的 Web 应用程序时收到 404 页面未
  • 直接堆栈和堆访问;虚拟级还是硬件级?

    当我在 SO 上时 我读了很多指导评论 尤其是 C 语言 动态分配总是在堆上 自动分配在堆栈上 但特别是对于普通 C 我不同意这一点 因为 ISO IEC9899 甚至没有丢弃堆或堆栈的任何字 它只是提到了三种存储持续时间 静态 自动和分配
  • 如何将 Images.xcassets 置于源代码管理之下?

    因此 我将 AppIcons 和 LaunchImages 迁移到 Images xcassets 看起来工作正常 但是我对启动图像进行了一些修改 现在我去提交更改 我使用的是仅限本地的 git 存储库 并且似乎不允许将 Images xc
  • 将数据库中的数据显示到 Android 的 listView

    我试图将数据库中的所有数据显示到列表视图中 创建数据库的代码 数据处理程序 package com example testingforstack import android content ContentValues import an