/*******************************************************************************
* Copyright 2013 PAR Works, Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.parworks.mars.view.search;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.parworks.mars.R;
import com.parworks.mars.cache.BitmapCache;
import com.parworks.mars.cache.BitmapWorkerTask.BitmapWorkerListener;
import com.parworks.mars.view.siteexplorer.ViewDimensionCalculator;
public class SearchResultAdapter extends ArrayAdapter<SearchResultItem> {
private ViewDimensionCalculator viewDimensionCalculator;
public class ViewHolder {
public TextView textView;
public ImageView imageView;
}
public SearchResultAdapter(Context context) {
super(context, 0);
this.viewDimensionCalculator = new ViewDimensionCalculator((Activity) context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
final String siteId = this.getItem(position).getSiteId();
final String imageUrl = this.getItem(position).getPosterImageUrl();
// create view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.search_result_list_row, null);
TextView title = (TextView) convertView.findViewById(R.id.searchSiteName);
final ImageView imageView = (ImageView) convertView.findViewById(R.id.searchSitePosterImage);
viewHolder = new ViewHolder();
viewHolder.textView = title;
viewHolder.imageView = imageView;
viewHolder.imageView.getLayoutParams().height = (int) (viewDimensionCalculator.getScreenWidth() * 0.6);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// display the title
viewHolder.textView.setText(siteId);
// display poster image
if (imageUrl != null && !TextUtils.isEmpty(imageUrl)) {
if (!imageUrl.equals(viewHolder.imageView.getTag())) {
BitmapCache.get().getBitmapAsync(imageUrl, new BitmapWorkerListener() {
@Override
public void bitmapLoaded(Bitmap bitmap) {
viewHolder.imageView.setImageBitmap(bitmap);
viewHolder.imageView.setTag(imageUrl);
}
});
}
} else {
viewHolder.imageView.setImageBitmap(null);
viewHolder.imageView.setBackgroundResource(R.drawable.img_missing_image);
viewHolder.imageView.setTag(null);
}
return convertView;
}
public void updateRecord(String siteId, String posterImageUrl) {
boolean isExist = false;
for(int i = 0; i < this.getCount(); i++) {
if (this.getItem(i).getSiteId().equals(siteId)) {
isExist = true;
if (posterImageUrl != null && !posterImageUrl.equals(this.getItem(i).getPosterImageUrl())) {
this.getItem(i).setPosterImageUrl(posterImageUrl);
this.notifyDataSetChanged();
}
}
}
if (!isExist) {
add(new SearchResultItem(siteId, posterImageUrl));
this.notifyDataSetChanged();
}
}
}