我有两个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();;
}
答案 0 :(得分:1)
在您的数据更新方法中
如果方法在您的适配器中,则调用notifyDataSetChanged();
如果您的活动中使用了更新方法,请致电您的适配器。notifyDataSetChanged();
或者,如果您的数据来自某个api调用并被插入到数据库中,则可以执行以下操作
在适配器中使用公共方法来获取数据,即光标
例如,在适配器中
public void refreshData(){
Cursor=yourdatabase.getyourMethod();
notifyDataSetChanged();}
然后从适配器之类的适配器接收广播呼叫refreshData
adapter.refreshData()