NotifyDataSetChanged在后退按钮不起作用
问题描述:
我有一个应用程序有两个Intents
。首先显示一些对象,第二个喜欢的对象是第一个对象Intent
,但标记为“最喜欢的”。当我在第二个Intent
-最喜欢的时候,我想将未标记的对象变成“常规”对象,然后当我点击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;
}
答
尝试是这样的
@Override
public void onBackPressed() {
super.onBackPressed();
washLocations.remove(1);
//need to change in arraylist than only you can notify your adapter.
//add some data in array list or remove data.than try to notify it.
myAdapter.notifyDataSetChanged();
}
希望这帮助你..如果需要任何帮助,你可以要求它。
你需要刷新'onResume'中的第一个'Activity'而不是'onBackPressed' –
的作品!感谢:D – bielas
在onResume中刷新数据不是一个好方法,因为如果用户按回到主页并返回到您的活动,则刷新冗余列表,更好的方法是'onActivityResult',如果用户更改第二个活动中的任何项目,则刷新列表,否则不要刷新数据。 –