私は2つのIntents
を持つアプリを持っています。最初にいくつかのオブジェクトを表示します。最初のオブジェクトは「Intent
」のオブジェクトで、「お気に入り」とマークされています。私が2番目にいるときは、お気に入りのオブジェクトを「普通の」オブジェクトにする必要があります。back button
をクリックすると、オブジェクトのリストが更新され、「お気に入りに追加」ボタンが表示されます。しかし、それは動作しません:戻るボタンでNotifyDataSetChangedが機能しない
好きなintent
:
public class FavWashActivity extends Activity{
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private MyAdapter myAdapter;
private List<WashLocation> washLocations;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite_wash);
mRecyclerView = (RecyclerView) findViewById(R.id.fav_recycler_view);
DataBaseHelper dataBaseHelper = new DataBaseHelper(getApplicationContext());
washLocations = dataBaseHelper.getFavouriteWashLocation();
mAdapter = new MyAdapterFavWash(washLocations, this);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
myAdapter = new MyAdapter(null, this, null);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
onBackPressed();
}
return false;
}
@Override
public void onBackPressed() {
super.onBackPressed();
myAdapter.notifyDataSetChanged();
}
}
そして、リフレッシュする必要adapter
:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<WashLocation> washLocations;
private LayoutInflater layoutInflater;
private DataBaseHelper dataBaseHelper;
private Map<String, Integer> queueToWash;
public MyAdapter(List<WashLocation> washLocations, Context context, Map<String, Integer> queueToWash) {
layoutInflater = LayoutInflater.from(context);
this.washLocations = washLocations;
dataBaseHelper = new DataBaseHelper(context);
this.queueToWash = queueToWash;
}
あなたは 'onBackPressed'の代わりに' 'Activity''の' onResume'であなたのリストをリフレッシュする必要があります –
作品!ありがとうございます:D – bielas
あなたがあなたの活動に家を押し戻して冗長なリストをリフレッシュすると、より良い方法は 'onActivityResult'であり、ユーザが2番目のアクティビティでアイテムを変更するとリストをリフレッシュするので、onResumeのデータをリフレッシュするのは良い方法ではありません。それ以外はデータを更新しません。 –