android - recyclerview 内部连接 SQLite
问题描述
我有两个 sqlite 表一个包含 Fid、name、mobile,其中第二个表包含 Sid、fsid、主题、标记。现在我想在 recyclerView 中获取包含 fid,name ,mobile ,sum(marks) 的数据,但是当我从第一个表适配器输入新数据时没有显示它。
这是我的查询:
Cursor c = db.rawQuery("SELECT id ,name ,mobile ,SUM(marks) FROM d_TB INNER JOIN d_TBL ON id = id_t ",null);
return c;
这是我的适配器类:
@Override
public void onBindViewHolder(final MyHolder holder, final int position) {
final CrudData data_ = student.get(position);
holder.itxt.setText(student.get(position).getId());
holder.nametxt.setText(student.get(position).getName());
holder.mobileTxt.setText(student.get(position).getmobile());
holder.sum_.setText(student.get(position).getMarks());
holder.setItemClickListener(new ItemLongClickListener() {
@Override
public void onItemClick(View v, int pos) {
Intent i = new Intent(c,EditMarks.class);
i.putExtra("Id", players.get(position).getId());
i.putExtra("Name", players.get(position).getName());
c.startActivity(i);
}
});
这是我的方法:
private void retrieve()
{
crudData.clear();
DBAdapter db=new DBAdapter(this);
db.openDB();
Cursor c=db.insertSab();
while (c.moveToNext())
{
String id=c.getString(0);
String name=c.getString(1);
String pos=c.getString(2);
String sum=c.getString(3);
CrudData p=new CrudData(id,name,pos,sum);
crudData.add(p);
}
if(!(crudData.size()<1))
{
rv.setAdapter(adapter);
}
db.closeDB();;
}
解决方案
notifyDataSetChanged();
如果方法在您的适配器中,则在您的数据更新方法调用中;如果您的更新方法在您的活动中,则调用您的适配器。notifyDataSetChanged();
或者,如果您的数据来自某个 api 调用并插入到数据库中,您可以执行以下操作
- 从您将数据插入数据库的位置发送广播
- 然后在您设置适配器的活动中接收广播
在您的适配器中创建一个公共方法来获取您的数据,即您的光标
在您的适配器中,例如
public void refreshData(){ Cursor=yourdatabase.getyourMethod(); notifyDataSetChanged();}
然后从您的适配器接收您的广播调用 refreshData,例如
adapter.refreshData()
推荐阅读
- git - Git 标记 - 最佳实践
- react-native - 我正在开发 react native 应用程序,因为我需要支持使用 OneDrive,Dropbox 上传文件。有什么办法可以完成
- javascript - 如何使用 jQuery 变量隐藏 HTML 表格行
- python - 在 matplotlib(或 seaborn)的同一图中绘制多个子图时,如何使 x 轴保持一致?
- dagger - Androidx workmanager 用匕首注入
- python - 下面的代码有什么问题?
- python - 带有redis代理可见性超时的芹菜
- javascript - 使用 AOT 构建时,模块未犯规 角度错误?
- java - 如何在 macOS 中卸载 Java JDK?
- mysql - 我应该将子帖子标记为删除还是主帖子就足够了?