后退按钮的NotifyDataSetChanged不起作用

时间:2017-05-21 12:22:56

标签: android android-intent android-adapter back-button

我有一个有两个Intents的应用。首先显示一些对象,第二个是最喜欢的对象,它们是来自第一个Intent的对象,但标记为“最喜欢的”#39;当我在第二个Intent - 最喜欢的时候,我希望无标记的对象成为常规的'对象然后当我点击back button刷新对象列表并显示启用按钮时添加到收藏夹'。但它不起作用:

收藏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;
    }

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

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

希望这对你有帮助..如果需要任何帮助,你可以提出要求。