動態修改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));服務器

相關文章
相關標籤/搜索