我正在尝试删除具有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的新手。 :(
答案 0 :(得分:0)
你必须使用与"用户看到的"相关的方法。我可以称之为(布局方法),它们是:
第一个按照自身布局返回视图位置,而不是适配器 第二个为数据集给定位置的项目返回 ViewHolder
在您的代码中,您正在使用我可以调用的内容(适配器方法)
使用(适配器方法)的任何更改都不会反映到Layout中,直到您使用(布局方法)
希望这会有所帮助