如何在从recyclerview适配器打开的活动被删除时更新recyclerview

时间:2016-08-23 14:54:41

标签: android android-recyclerview android-adapter android-adapterview

我正在使用Recyclerview适配器来填充Recyclerview。从SQLite填充Recyclerview后,如果用户想要打开recyclerview项,则需要单击该项并且适配器打开相关活动。这是一张可以帮助您轻松理解的图片。

Updating RecyclerView

当活动打开时,用户可以在删除数据后通过单击删除按钮从SQLite中删除该帖子,recyclelerview应该动态更新数据。

3 个答案:

答案 0 :(得分:1)

您还可以使用 StartActivityForResult ,并在第一个活动中使用第二个活动的结果删除项目。

我的意思是:

  1. FirstActivity启动SecondActivity等待结果
  2. SecondActivity将结果发送回FirstActivity。只有你删除 该项目。
  3. 现在,FirstActivity删除并刷新列表。
  4. 在FirstActivity中:

    Intent i = new Intent(this, SecondActivity.class);
    startActivityForResult(i, 1);
    

    在SecondActivity中,当您按下删除按钮时:

    Intent returnIntent = new Intent();
    returnIntent.putExtra("delete", true);
    returnIntent.putExtra("position", position);
    setResult(Activity.RESULT_OK, returnIntent);
    finish();
    

    最后,FirstActivity处理结果:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
        if (requestCode == 1) {
            if(resultCode == Activity.RESULT_OK){
                if (data.getBooleanExtra("delete") {
                     // get position and delete item from list and refresh
                     int position = data.getIntegerExtra("position");
                }
            }
            if (resultCode == Activity.RESULT_CANCELED) {
                //Write your code if there's no result
            }
        }
    }//onActivityResult
    

    https://stackoverflow.com/a/10407371/1820599

    <强>编辑:

    在适配器构造函数中获取活动的上下文:

    FirstActivity listener;
    
    public myAdapter(Context context, List<String> items) {
            super(context, R.layout.row_edition, items);
    
            this.listener = ((FirstActivity) context);
            this.items = items;
        }
    

    然后,在适配器内部,当你按下项目时,调用活动来启动第二个:

    listener.startSecondActivity(int position, parameters you need to use);
    

    最后,在你的FirstActivity中

    startSecondActivity(int position, parameters you need to use) {
        // whatever you have to do
        Intent i = new Intent(this, SecondActivity.class);
        // push position inside intent and whatever you need
        startActivityForResult(i, 1);
    }
    

    流程是:

    1. 推送项目
    2. 使用FirstActivityListener调用SecondActivity
    3. 在SecondActivity中删除和传回结果
    4. 在FirstActivity中使用辅助方法从适配器中删除项目 内部que适配器

答案 1 :(得分:1)

如果您在单击以显示公司详细信息并显示公司详细信息时显示了recyclelerview中的公司列表,那么您应该发现该项目会消失,这是我的代码所做的

 protected void onResume()
{
    super.onResume();
    Log.i("TAG", "resume");
    if(yourlist.size() > 0)
    {
        yourlist.clear();
        yourlist.addAll(where your data come from 
        ex:databaseHelper.GetOrganization());
        youradapter.notifyDataSetChanged();
    }
}

答案 2 :(得分:0)

您必须在活动中实施一个监听器,它告诉您的回收站视图项目已更改。我假设您已经为回收站视图实现了自己的onItemClickListener,因此您可以轻松地从回收站视图数据集中删除项目。有关详细信息,请发布您的代码。

这个监听器进入你的类填充Recycler视图。

     public interface DeletedListener {
         void deleted(int position);
     }

使您的活动实现此侦听器,并发送必须删除的位置。

    public void setListener(DeletedListener listener) {
       this.listener = listener;
    }

    DeletedListener listener;

从您的活动中调用setListener方法,并从适配器调用deleted方法。