ListViewを表示するためにカスタムアダプタを使用していますが、ListViewは非常にぎくしゃくした動作をします
カスタムアダプタのコード
class ListAdapter extends BaseAdapter
{
Context context;
ArrayList<T> arr ;
public ListAdapter(Context con,ArrayList<T> arrayList) {
arr = arrayList;
context = con;
}
@Override
public int getCount() {
return arr.size();
}
@Override
public Object getItem(int arg0) {
return arg0;
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null ){
viewHolder = new ViewHolder();
convertView = View.inflate( context,R.layout.match_introspection_list_item, null);
viewHolder.teamFlagOneImageView = (ImageView) convertView.findViewById(R.id.imageView1);
viewHolder.teamFlagTwoImageView = (ImageView) convertView.findViewById(R.id.imageView3);
viewHolder.teamOneTextView =(TextView) convertView.findViewById(R.id.textView1);
viewHolder.teamTwoTextView =(TextView) convertView.findViewById(R.id.textView4);
viewHolder.dateTextView =(TextView) convertView.findViewById(R.id.textView2);
viewHolder.placeTextView =(TextView) convertView.findViewById(R.id.textView3);
viewHolder.descTextView = (TextView) convertView.findViewById(R.id.desc);
convertView.setTag(viewHolder);
}else{
viewHolder =(ViewHolder) convertView.getTag();
}
final MatchIntrospectionObjects obj = arr.get(pos);
viewHolder.teamOneTextView.setText(obj.home_team_abbrev);
viewHolder.teamTwoTextView.setText(obj.away_team_abbrev);
viewHolder.descTextView.setText(Html.fromHtml("<b>Description: </b>")+obj.matchdescription);
if(obj.date.equals("")){}else
viewHolder.dateTextView.setText(splitDate(obj.date));
viewHolder.placeTextView.setText(obj.venue);
imageLoader.displayImage(FLAG_BASE_URL+obj.home_flag, viewHolder.teamFlagOneImageView, options, animateFirstListener);
imageLoader.displayImage(FLAG_BASE_URL+obj.away_flag, viewHolder.teamFlagTwoImageView, options, animateFirstListener);
return convertView;
}
}
これはListAdpaterのmycodeです
Oncreate()メソッドでこのようにListAdapterを設定しています
ListAdapter adapter =new ListAdapter(this,listArray);
mListView.setAdapter(adapter);
このコードは、ListViewでのぎくしゃくした影響を最小限に抑えるのに役立ちます。
Universal Image Loaderを使用してURLから画像をフェッチしています同じ画像が同じURLから別のセルをフェッチする場合、Universal ImageLoaderは再度フェッチしてagianを取得するか、生涯に1回フェッチしてから、キャッシュから取得します。