ListView 캐시 메커니즘

어댑터는 리스트에 항목이 있을 때마다 어댑터의 GetView () 방법을 사용해서 View를 만듭니다.그러면 비교적 적은 데이터에 대응할 때 이것은 완전히 ok로 아무런 문제가 없을 것이다. 그러나 데이터의 양이 많을 때 각각의 창설view는 시스템 자원을 많이 차지하기 때문에 성능 최적화 방법을 사용한다.
그러면 ListView의 작업 원리를 이해했고 ListView의 캐시 메커니즘을 살펴보겠습니다.
1) 데이터의 양이 많을 때 보이는 항목은 메모리에 저장하고 다른 항목은 Recycler에 저장한다.
2) Listview는 getView () 를 통해 하나의 View를 요청하고 다른 보이는 View를 요청합니다. 이 때 convertView는 getView () 에서 비어 있습니다.
3) 리스트 항목의 첫 번째 항목이 화면에서 꺼지고 데이터가 낮은 곳에서 올라올 때 ListView는 다시 View를 요청합니다. 이때convertView는 비어 있지 않고 화면의 첫 번째 항목에서 꺼집니다. 이럴 때 View 대상을 만들지 않고 새 값을 직접 설정하면 시스템 자원을 절약할 수 있습니다.
캐시 원리를 사용하는 사용자 정의 어댑터
public class MyAdapter extends BaseAdapter{
  private Context context;
  private String[] data;
  private int[] p_w_picpaths;
  public MyAdapter(Context context, String[] data,int[] p_w_picpaths){
      this.context=context;
      this.data=data;
      this.p_w_picpaths=p_w_picpaths;
  }
    @Override
    public int getCount() {
                     
        return data.length;
    }
    @Override
    public Object getItem(int position) {
                         
        return data[position];
    }
    @Override
    public long getItemId(int position) {
                         
        return position;
    }
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
        if(convertView==null){
            convertView=LayoutInflater.from(context).inflate(R.layout.items, null);
            holder=new ViewHolder();
            holder.iv=(ImageView) convertView.findViewById(R.id.adapter_iv);
            holder.tv=(TextView) convertView.findViewById(R.id.adapter_tv);
            convertView.setTag(holder);
        }else{
            holder=(ViewHolder) convertView.getTag();
        }
        holder.iv.setBackgroundResource(p_w_picpaths[position]);
        holder.tv.setText(data[position]);
        return convertView;
    }
//    View
    private static class ViewHolder{
        ImageView iv;
        TextView tv;
    }
}

사용에 있어서는 마찬가지입니다. 오늘의 주제는 그것이 아니기 때문에 여기서는 소개하지 않겠습니다.자, 이것만 말씀드리겠습니다. ListView의 캐시 메모리 메커니즘을 이해하는 데 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기