[英]ProgressBar in RecyclerView item not animating on notifyDataSetChanged
[英]notifydatasetchanged on recyclerview item click
我有一个带有ImageButton
的RecyclerView
。 我想用ImageButton的onClick()
事件中的新项目更新RecyclerView
。 它可以在我的数据库上正常工作,但不会刷新RecyclerView。
@Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
final Quote current = data.get(position);
holder.quote.setText(current.getQuote());
holder.name.setText(current.getName());
holder.number.setText(String.valueOf(current.getId()));
if (current.getIsLiked()==1){
holder.quote.setTextColor(Color.parseColor("#c0392b"));
holder.name.setTextColor(Color.parseColor("#e74c3c"));
holder.relativeLayout.setBackgroundColor(Color.parseColor("#ecf0f1"));
}else if (current.getIsLiked()==0){
holder.quote.setTextColor(Color.parseColor("#ffffff"));
holder.name.setTextColor(Color.parseColor("#fefefefe"));
holder.relativeLayout.setBackgroundColor(Color.parseColor("#F5F5F5"));
holder.relativeLayout.getBackground().setAlpha(11);
}
holder.imgIsLiked.setOnClickListener(new View.OnClickListener() {
DataBaseHelper db=new DataBaseHelper(context);
@Override
public void onClick(View v) {
if (current.getIsLiked()==0){
db.updateDatabase(current.getId(), 1);
swap();
}
else if (current.getIsLiked()==1){
db.updateDatabase(current.getId(), 0);
swap();
}
}
});
}
private void swap(){
List<Quote> data2 = new ArrayList<Quote>(data);
data.clear();
data.addAll(data2);
notifyDataSetChanged();
}
这是我的芬芳:
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedState){
setHasOptionsMenu(true);
View view=inflater.inflate(R.layout.quotes_fragment,container,false);
recyclerView= (RecyclerView) view.findViewById(R.id.quotes_fragment_recyclerView);
DataBaseHelper dataBaseHelper=new DataBaseHelper(getContext());
adapter = new QuoteAdapter(getContext(), dataBaseHelper.getAllData());
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
return view;
}
更新:感谢塞尔文,解决方案是:
holder.imgIsLiked.setOnClickListener(new View.OnClickListener() {
DataBaseHelper db = new DataBaseHelper(context);
@Override
public void onClick(View v) {
if (current.getIsLiked() == 0) {
current.setIsLiked(1);
db.updateDatabase(current.getId(), 1);
notifyDataSetChanged();
} else if (current.getIsLiked() == 1) {
db.updateDatabase(current.getId(), 0);
current.setIsLiked(0);
notifyDataSetChanged();
}
}
});
试试这个在onClick函数上调用此函数
public void foo(int position) {
data.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, list.size());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.