[英]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.