首页 > 解决方案 > 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();;
}

标签: androidsqliteandroid-recyclerview

解决方案


notifyDataSetChanged();如果方法在您的适配器中,则在您的数据更新方法调用中;如果您的更新方法在您的活动中,则调用您的适配器。notifyDataSetChanged();

或者,如果您的数据来自某个 api 调用并插入到数据库中,您可以执行以下操作

  1. 从您将数据插入数据库的位置发送广播
  2. 然后在您设置适配器的活动中接收广播
  3. 在您的适配器中创建一个公共方法来获取您的数据,即您的光标

    在您的适配器中,例如

    public void refreshData(){
    
          Cursor=yourdatabase.getyourMethod();
    
            notifyDataSetChanged();}
    
  4. 然后从您的适配器接收您的广播调用 refreshData,例如

          adapter.refreshData()
    

推荐阅读