小编LA_*_*mie的帖子

Android Room 中出现“预期表或子查询,出现”错误

我正在编写一个数据库,用于使用 Room 保存有关 Android 应用程序中单词的信息。我已经构建了两个实体:Group 和 VocaNote。在组和 VocaNote 之间,我使用一对多关系将 VocaNote 数组保留在单独的组中。

团体课

@Entity(indices = {
    @Index(value = {"language", "nameGroup"}, unique = true)
}
)
public class Group {

@PrimaryKey(autoGenerate = true)
public long id;

@ColumnInfo(name = "language")
public String language;

@ColumnInfo(name = "name_group")
public String nameGroup;
}
Run Code Online (Sandbox Code Playgroud)

VocaNote 类

    @Entity(foreignKeys = @ForeignKey(entity = Group.class,
    parentColumns = "id",
    childColumns = "group_id",
    onDelete = CASCADE))
  public class VocaNote {

@PrimaryKey(autoGenerate = true)
public long id;

@ColumnInfo(name = "origin_word")
public String originWord;

@ColumnInfo(name …
Run Code Online (Sandbox Code Playgroud)

database sqlite orm android android-room

5
推荐指数
1
解决办法
3570
查看次数

Android Room Database中的@Query Update不会更新主键字段

我正在使用Room数据库编写Android应用。我的数据库包含具有以下代码的GroupVc实体:

@Entity
public class GroupVc {

@ColumnInfo(name = "language")
private String language;


@NonNull
@PrimaryKey
@ColumnInfo(name = "name_group")

private String nameGroup;

public GroupVc(String language, String nameGroup) {
    this.language = language;
    this.nameGroup = nameGroup;
}

public String getLanguage() {
    return language;
}

public void setLanguage(String language) {
    this.language = language;
}

@NonNull
public String getNameGroup() {
    return nameGroup;
}

@NonNull
public void setNameGroup(String nameGroup) {
    this.nameGroup = nameGroup;
}
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我的实体类包含两列,其中nameGroup是我的PrimaryKey。在我的应用程序中,我想让用户查看组的完整列表,并通过输入新的组名称来更改组DialogFragments的名称。为了实现这样的功能,我创建了下一个DAO @Query方法:

@Dao
public interface GroupVcDao {
@Query("UPDATE groupvc SET name_group= :newName …
Run Code Online (Sandbox Code Playgroud)

sql android sql-update

5
推荐指数
1
解决办法
1239
查看次数

使用 SearchView 过滤 RecyclerView 的 LiveData 内容列表

我创建了 RecyclerView,其中包含简单的单词列表(GroupVc 对象的字符串名称)。由于列表可能很长,我想使用工具栏中的 SearchView 对其进行过滤。我的应用程序的架构基于 Android 架构组件,其中所有 GroupVc 对象都存在于 Room 数据库中,并且通过 ViewModel 和 Repository 对象提供从 UI 对 DataBase 的访问。我正在将包含在 LiveData 中的所有 GroupsVc 列表归档到 RecyclerView 以保持更新。我的问题是我不知道如何使 RecyclerView 可过滤。我尝试通过在适配器中实现可过滤接口来做到这一点:

public class GroupsVcAdapter extends
    RecyclerView.Adapter<GroupsViewHolder> implements Filterable{

private LayoutInflater mInflater;
private List<GroupVc> mGroupsVc;
private List<GroupVc> filteredGroupsVc;
private OnItemClicked onClick;
public GroupsVcAdapter(Context context, OnItemClicked onClick) {
    mInflater = LayoutInflater.from(context);
    this.onClick = onClick;
}

public List<GroupVc> getmGroupsVc() {
    return mGroupsVc;
}

@Override
public GroupsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = mInflater.inflate(R.layout.layout_list_of_groups, parent, false); …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview android-livedata android-architecture-components

5
推荐指数
1
解决办法
8313
查看次数