Java 重新加载RecyclerView不会’;更新项目

Java 重新加载RecyclerView不会’;更新项目,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在使用以下代码: refresh.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = getIntent(); overridePendingTransition(0, 0); intent.ad

我正在使用以下代码:

refresh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = getIntent();
                overridePendingTransition(0, 0);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                finish();
                overridePendingTransition(0, 0);
                startActivity(intent);
            }
        }); 
该活动包含一个recycler视图,我希望在单击refresh时重新加载该活动,但Recyclerview不会再次填充,它具有与重新加载之前相同的信息。如果我转到另一个活动,然后又回到这个活动,那么它确实会改变。 我做错了什么

以下是完整的活动代码:

public class SyncActivity extends Activity {

    private static String TAG = "SynActivity";

    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    private TextView textView;
    private ImageView backArrow;
    private ImageView refresh;

    // Sesión actual
    private Usuario usuario;
    private String sessionid;

    List<TrafficSign> tsList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sync);

        tsList = new ArrayList<TrafficSign>();

        // Sesión actual
        sessionid = getIntent().getExtras().getString("sessionid");
        usuario = (Usuario) getIntent().getExtras().get("usuario");

        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        textView = (TextView) findViewById(R.id.texto);
        backArrow = (ImageView) findViewById(R.id.backarrow);
        refresh = (ImageView) findViewById(R.id.refresh);

        // use this setting to improve performance if you know that changes
        // in content do not change the layout size of the RecyclerView
        mRecyclerView.setHasFixedSize(true);

        // use a linear layout manager
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        // specify an adapter with the list to show
        ConexionSQLiteHelper conexionSQLiteHelper = new ConexionSQLiteHelper(this, NOMBRE_BD, null, 1);
        SQLiteDatabase dbread = conexionSQLiteHelper.getReadableDatabase();
        Cursor c = dbread.rawQuery(COMRPUEBA_SYNC, new String[]{usuario.getUsername()});

        // Si hay conexión a internet y hay datos en SQLite, sincronizamos.
        if (c.getCount() > 0) {
            textView.setVisibility(View.INVISIBLE);
            if (c.moveToFirst()) {
                while (!c.isAfterLast()) {
                    tsList.add(new TrafficSign(c.getDouble(c.getColumnIndex(CAMPO_LONGITUD)),
                            c.getDouble(c.getColumnIndex(CAMPO_LATITUD)),
                            c.getDouble(c.getColumnIndex(CAMPO_ANCHO)),
                            c.getDouble(c.getColumnIndex(CAMPO_ALTO)),
                            c.getString(c.getColumnIndex(CAMPO_CLASE)),
                            c.getString(c.getColumnIndex(CAMPO_USERNAME))));
                    c.moveToNext();
                }
            }
            c.close();
            dbread.close();
            mAdapter = new SyncAdapter(tsList);
            mRecyclerView.setAdapter(mAdapter);
        }else{
            textView.setVisibility(View.VISIBLE);
        }

        backArrow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SyncActivity.this, MainActivity.class);
                intent.putExtra("sessionid", sessionid);
                intent.putExtra("usuario", usuario);
                startActivity(intent);
            }
        });

        refresh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = getIntent();
                overridePendingTransition(0, 0);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                finish();
                overridePendingTransition(0, 0);
                startActivity(intent);
            }
        });
    }
}
公共类SyncActivity扩展活动{
私有静态字符串TAG=“SynActivity”;
私人回收视图mRecyclerView;
专用回收器查看适配器mAdapter;
private RecyclerView.LayoutManager MLLayoutManager;
私有文本视图文本视图;
私有图像视图反向箭头;
私有图像视图刷新;
//塞西翁酒店
私人用膳用膳;
私有字符串sessionid;
列表tsList;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u sync);
tsList=newarraylist();
//塞西翁酒店
sessionid=getIntent().getExtras().getString(“sessionid”);
usuario=(usuario)getIntent().getExtras().get(“usuario”);
mRecyclerView=(RecyclerView)findViewById(R.id.my\u recycler\u视图);
textView=(textView)findViewById(R.id.texto);
backArrow=(ImageView)findViewById(R.id.backArrow);
刷新=(ImageView)findViewById(R.id.refresh);
//如果您知道这些更改,请使用此设置提高性能
//在内容中,不要更改RecyclerView的布局大小
mRecyclerView.setHasFixedSize(true);
//使用线性布局管理器
mRecyclerView.setLayoutManager(新的LinearLayoutManager(this));
//使用要显示的列表指定适配器
ConexionSQLiteHelper ConexionSQLiteHelper=新的ConexionSQLiteHelper(this,NOMBRE_BD,null,1);
SQLiteDatabase dbread=conexionSQLiteHelper.getReadableDatabase();
游标c=dbread.rawQuery(COMRPUEBA_SYNC,新字符串[]{usuario.getUsername()});
//Si hay conexión a互联网和SQLite的hay datos,sincronizamos。
如果(c.getCount()>0){
textView.setVisibility(View.INVISIBLE);
if(c.moveToFirst()){
而(!c.isAfterLast()){
tsList.add(新交通标志(c.getDouble(c.getColumnIndex(CAMPO_LONGITUD)),
c、 getDouble(c.getColumnIndex(CAMPO_LATITUD)),
c、 getDouble(c.getColumnIndex(CAMPO_ANCHO)),
c、 getDouble(c.getColumnIndex(CAMPO_ALTO)),
c、 getString(c.getColumnIndex(CAMPO_CLASE)),
c、 getString(c.getColumnIndex(CAMPO_用户名));
c、 moveToNext();
}
}
c、 close();
dbread.close();
mAdapter=新的同步适配器(tsList);
mRecyclerView.setAdapter(mAdapter);
}否则{
textView.setVisibility(View.VISIBLE);
}
backArrow.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(SyncActivity.this,MainActivity.class);
意向。额外(“sessionid”,sessionid);
意图。额外的(“usuario”,usuario);
星触觉(意向);
}
});
refresh.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent=getIntent();
覆盖转换(0,0);
intent.addFlags(intent.FLAG\u活动\u无\u动画);
完成();
覆盖转换(0,0);
星触觉(意向);
}
});
}
}
您只需使用

finish();
startActivity(getIntent());

要从内部刷新
活动

填充回收视图的代码在哪里?另外,是否有其他原因需要刷新活动本身,或者只是您感兴趣的RecyclerView的内容?如果是这样的话,我们应该这样做。@LukeSykpe notifyDataSetChange()在我的例子中不起作用,因为如果不重新加载活动,数据集不会改变。问题是,当没有互联网时,我从SQLite获取信息,并将其显示在recycler视图中。当我再次激活internet时,SQLite数据被删除,它在RecyclerView上应该什么都没有,但为此,我们必须重新加载活动并再次查询SQLite数据库。@LukeSykpe我编辑了这个问题,以便在需要时让您看到活动代码。是什么阻止您在
onClick()中运行SQLite查询代码
,而不是刷新活动?我真的没有发现你的代码有什么问题-除非我遗漏了什么,否则它应该可以工作。你确定SQLite数据确实在更改吗?@LukeSykpe是的,它在更改,因为如果我转到另一个活动,然后返回,它会更改。我将尝试在onClick()中运行SQLite查询代码。非常感谢你!