簡體   English   中英

重新加載 RecyclerView 不會更新項目

[英]Reloading RecyclerView doesn’t update items

我正在使用以下代碼:

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);
            }
        }); 

該活動包含一個回收器視圖,我希望在單擊刷新時重新加載該活動,但 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);
            }
        });
    }
}

你可以簡單地使用

finish();
startActivity(getIntent());

從內部刷新Activity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM