删除recyclerView中的项目不会反映下一个活动中的更改

时间:2017-04-09 13:45:37

标签: java android android-recyclerview

我正在尝试删除具有recyclerview的卡片。问题是,当我单击卡片中的删除按钮时,更改不会反映下一个活动。当我单击“删除”按钮时,textview和imageview必须相应地更改。但那并没有发生。

这是我在viewHolder中的onclick。我用过Interface。 :

      public void onClick(View view)
    {
        //get data from array list
        if(view.getId()==R.id.cont_root){

            if(itemClickCallback!=null) {
                itemClickCallback.onRootClick(getAdapterPosition());
            }
        }
        else{

            delete(getAdapterPosition());
        }

    }
}

这是我在适配器中的删除方法:

public void delete( int position){

    listData.remove(position);
    notifyItemRemoved(position);
    notifyItemRangeChanged(position, getItemCount()-1);
}

这是我点击Cardview时的代码.Card的名字是Root。

    public void onRootClick(int p) {
    //adapter.setItemClickCallback(this);
    adapter.notifyItemChanged(p);
    ListItem item =(ListItem)listData.get(p);
    Intent i = new Intent(this,SecondActivity.class);
    Bundle extras=new Bundle();
    extras.putString(EXTRA_QUOTE, item.getTitle());
    extras.putInt(EXTRA_ATTR,item.getImageResID());
    i.putExtra(BUNDLE_EXTRAS,extras);

    startActivity(i);

}

注意:我没有使用interface方法删除元素。

请帮忙。我是Recyclerview的新手。 :(

1 个答案:

答案 0 :(得分:0)

你必须使用与"用户看到的"相关的方法。我可以称之为(布局方法),它们是:

  • getLayoutPosition()
  • findViewHolderForLayoutPosition(int)的

第一个按照自身布局返回视图位置,而不是适配器 第二个为数据集给定位置的项目返回 ViewHolder

在您的代码中,您正在使用我可以调用的内容(适配器方法)

  • getAdapterPosition()

使用(适配器方法)的任何更改都不会反映到Layout中,直到您使用(布局方法)

希望这会有所帮助