动态修改Listview中某一个item中的值

前几天项目遇到一个需求,在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));
        }
    }
复制代码

最后有个地方须要注意的,那就是当我更新了这个item的点赞总数和点赞状态后,不少不当心的朋友都以为已经结束了。最后一步还要刷新本地的List集合,不然修改完成后屏幕滚动回来数值加载的仍是本地没有修改过的。

list.get(position).setIs_lauds(0); list.get(position).setIs_lauds(1); list.get(position).setLauds_num(String.valueOf(count));服务器

相关文章
相关标签/搜索