前几天项目遇到一个需求,在Listview中,每个item都有点赞的需求,item中也有当前点赞的数量值,若是在某一个item中点赞以后,数量值要改变,而且点赞的图标会改变为已经点赞的状态,取消点赞也是一个道理。可是这个地方只涉及到其中的某一个item,用adapter.notifyDataSetChanged()就大材小用了,而且与咱们的需求也不符。java
public void updateItemLadus(int position,int is_like,int count) {
//firstVisiblePosition和lastVisiblePosition是当前屏幕上显示的第一个和最后一个item
int firstVisiblePosition = listView.getFirstVisiblePosition() ;
int lastVisiblePosition = listView.getLastVisiblePosition() ;
//position是当前你所须要处理的item索引,
if(position>=firstVisiblePosition && position<=lastVisiblePosition)
{
View view = listView.getChildAt(position - firstVisiblePosition) ;
TextView like = (TextView) view.findViewById(R.id.item_feed_islike);
TextView counts = (TextView) view.findViewById(R.id.lauds_num);
if(is_like==0)
{
//is_like是服务器回传给个人值,0是没有关注,1是已经关注
like.setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(getActivity(),R.mipmap.icon_dynamic_item_laduis),null,null,null);
list.get(position).setIs_lauds(0);
}else {
like.setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(getActivity(),R.mipmap.icon_dynamic_item_laduised),null,null,null);
list.get(position).setIs_lauds(1);
}
//count是服务器回传给个人当前item点赞总数值
counts.setText(""+count);
list.get(position).setLauds_num(String.valueOf(count));
}
}
复制代码
list.get(position).setIs_lauds(0); list.get(position).setIs_lauds(1); list.get(position).setLauds_num(String.valueOf(count));服务器