ListView 캐시 메커니즘
2360 단어 ListViewandroidListView 캐시 메커니즘
그러면 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의 캐시 메모리 메커니즘을 이해하는 데 도움이 되었으면 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Flutter의 ListTile에서 높이를 지정하면 레이아웃이 무너지는 문제현재 업무로 1개월 반 정도 Flutter를 사용하고 있습니다. 아주 좋은 팀으로, 최근에는 Flutter 자체에도 열중해 왔습니다. title, subtitle, leading, trailing 등을 설정하는 것만...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.