前幾天項目遇到一個需求,在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));服務器