欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程記錄ListView標記行狀態(tài)的方法

 更新時間:2015年11月23日 16:00:05   作者:lee0oo0  
這篇文章主要介紹了Android編程記錄ListView標記行狀態(tài)的方法,結合實例分析了ListView標記的相關實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Android編程記錄ListView標記行狀態(tài)的方法。分享給大家供大家參考,具體如下:

小Demo無什么特別之處,最特別的就是盡量少用notifyDataSetChanged,開銷太大了,當然使用是會省不少工的,不過有時候還是會遇到別的問題的,項目經驗表示會有這個可能性的,廢話不多少了,直接上關鍵代碼。

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long arg3) {
  /**
   * 在ListView中,使用getChildAt(index)的取值,只能是當前可見區(qū)域(列表可滾動)的子項!
  1、所以如果想獲取前部的將會出現(xiàn)返回Null值問題;
  2、getChildCount跟getCount獲取的值將會不一樣(數(shù)量多時);
  3、如果使用了getChildAt(index).findViewById(...)設置值的話,滾動列表時值就會改變了。
  需要使用getFirstVisiblePosition()獲得第一個可見的位置,在用當前的position-getFirstVisiblePosition(),再用getChildAt取值!
   * */
  int now_pos = pos - adapterView.getFirstVisiblePosition();
  View v = adapterView.getChildAt(now_pos);
  ImageView imageView = (ImageView) v.findViewById(R.id.image);
  if (imageView.getVisibility() == View.VISIBLE) {
   imageView.setVisibility(View.GONE);
   adapter.setState(pos,NONBIAOZHI);
  }else{
   imageView.setVisibility(View.VISIBLE);
   adapter.setState(pos,BIAOZHI);
   // getView調用,不過非常耗費性能
//   adapter.notifyDataSetChanged();
   // 不使用notifyDataSetChanged,getView不會刷新,提高效率
   refreshListView(pos, imageView);
  }
}
public void refreshListView(int pos, ImageView imageView) {
  if(pre != pos && !hasmap.isEmpty()){
   ImageView image = (ImageView) hasmap.get(pre);
   image.setVisibility(View.GONE);
   hasmap.remove(pre);
  }
  pre = pos;
  hasmap.put(pre, imageView);
}

上面的是在Activity的方法片段,下面的是BaseAdapter的方法片段:

// 設置標記
public void setState(int pos,int state){
  if(state == MainActivity.BIAOZHI){
   // 每次點擊都清空列表,保持唯一選擇性
   map.clear();
   map.put(pos, 1);
  }else{
   map.remove(pos);
  }
}
// 檢測標記
public boolean getState(int p){
  if (!map.isEmpty() && map.containsKey(p)) {
   return true;
  }else
   return false;
}

getView代碼:

// 固定顯示標記的行
if (getState(position)) {
 holder.imageView.setVisibility(View.VISIBLE);
}else
 holder.imageView.setVisibility(View.GONE);

附上項目下載,自己運行就會得到標題的效果。完整實例代碼代碼點擊此處本站下載。
希望本文所述對大家Android程序設計有所幫助。

相關文章

最新評論