gpt4 book ai didi

java - getAdaptoer 如何与这个简单的类一起使用来进行 SQlite 数据检索和存储?

转载 作者:行者123 更新时间:2023-12-01 11:55:54 24 4
gpt4 key购买 nike

我在 Android 应用程序中使用 SQLite 数据库。我从一个我现在似乎无法找到的特定网站推断出我的代码。但该代码包含一个用于填充和检索 SQLite 数据行的类:我将该类称为 dbData。据我所知,它只是存储数据行。没有构造函数,因此显然它在使用默认值调用时创建了适配器的实例。 tostring 作为 dbData 返回。但 Id 也可以设置和获取。

我的大问题是为什么使用此类而不是其他类中调用此类的变量?我的下一个问题是,如果 listAdaptor 返回适配器(按 http://developer.android.com/reference/android/widget/ListView.html#getAdapter() ),它会将哪些信息填充到行 dbData = (dbData) lstView.getAdapter().getItem(0); 中的 dbData 中它允许 dbData 返回一个字符串并获取正确的数据库行?是否自动将适配器转换为数据库关键字段?

感谢您的任何反馈。

代码如下:

public class dbData {

private long id;
private String dbData;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getDbData() {
return dbData;
}

public void setDbData(String dbData) {
this.dbData = dbData;
}

// Will be used by the ArrayAdapter in the ListView
@Override
public String toString() {
return dbData;
}

}

以下是其调用方式的示例:

public void onClick(View view) {
@SuppressWarnings("unchecked")

ListView lstView = (ListView)findViewById(R.id.lstHolidays);

ArrayAdapter<dbData> adapter = (ArrayAdapter<dbData>) lstView.getAdapter();
dbData dbData = null;
switch (view.getId()) {
case R.id.add:
String[] comments = new String[] { "Cool", "Very nice", "Hate it" };
int nextInt = new Random().nextInt(3);
// save the new dbData to the database
dbData = datasource.createDB_Row(comments[nextInt]);
adapter.add(dbData);
break;
case R.id.delete:
if (lstView.getAdapter().getCount() > 0) {
dbData = (dbData) lstView.getAdapter().getItem(0);
datasource.deleteDB_Row(dbData);
adapter.remove(dbData);
}
break;
}
adapter.notifyDataSetChanged();
}

最佳答案

正如您所说,您在这里有几个问题。

  1. 为什么使用dbData ?答案:因为它使得对数据库行进行操作成为可能。在此:

    dbData = (dbData) lstView.getAdapter().getItem(0);

    如果没有 dbData 你会怎么做?类(class)?您可能必须这样做:

    dbData_id = (Long) lstView.getAdapter().getItem(0).getItem(0);
    dbData_dbData = (String) lstView.getAdapter().getItem(0).getItem(1);

    现在想象一下,如果数据库中有 20 或 30 个字段,那么这样做。

  2. dbData = (dbData) lstView.getAdapter().getItem(0); 提供什么信息填入dbData

    这使得dbData (变量)包含对 dbData 的引用目的。由于您使用的是 ArrayAdapter ,这个引用来自数组。这里没有数据库魔法,只是数组访问。

  3. 是否自动将适配器转换为数据库关键字段?

    我不明白你的意思。不,它只是从数组中获取一个元素(隐藏在 ArrayAdapter 内)。

  4. 这行是 ArrayAdapter<dbData> adapter = (ArrayAdapter<dbData>) lstView.getAdapter();因为没有使用所以很重要?

    已使用。查看下面的几行,您会看到 adapter.add(dbData); 。和adapter.remove(dbData); ,和adapter.notifyDataSetChanged(); .

关于java - getAdaptoer 如何与这个简单的类一起使用来进行 SQlite 数据检索和存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28445741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com