package com.threeH.MyExhibition.adapters;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Typeface;
import android.os.AsyncTask;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.threeH.MyExhibition.R;
import com.threeH.MyExhibition.common.StringPools;
import com.threeH.MyExhibition.entities.Exhibition;
import com.threeH.MyExhibition.listener.SignupClickListener;
import com.threeH.MyExhibition.service.FileService;
import com.threeH.MyExhibition.service.ImageService;
import com.threeH.MyExhibition.tools.ImageURLUtil;
import com.threeH.MyExhibition.tools.MSYH;
import com.threeH.MyExhibition.tools.SharedPreferencesUtil;
import com.threeH.MyExhibition.tools.Tool;
import java.util.List;
public class SignExhiListAdapter extends BaseAdapter {
private List<Exhibition> data;
private LayoutInflater mInflater;
private Context context;
private String mStrToken;
Typeface typeface;
Typeface typeface_bold;
public SignExhiListAdapter(Context context, List<Exhibition> data) {
this.data = data;
mInflater = LayoutInflater.from(context);
this.context = context;
typeface = MSYH.getInstance(context.getApplicationContext()).getNormal();
typeface_bold = MSYH.getInstance(context.getApplicationContext()).getBold();
}
public SignExhiListAdapter(Context context, List<Exhibition> data,String token) {
this(context,data);
this.mStrToken = token;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
String exKey = data.get(position).getExKey();
if (convertView == null) {
holder = new ViewHolder();
convertView = this.mInflater.inflate(R.layout.signup_exhi_list_item, null);
holder.mExhibitionIcon = (ImageView) convertView.findViewById(R.id.signup_list_imageview_icon);
holder.mExhibitionTheme = (TextView) convertView.findViewById(R.id.signup_list_exhibition_theme);
holder.mExhibitionDate = (TextView) convertView.findViewById(R.id.signup_list_exhibition_date);
holder.mExhibitionAddress = (TextView) convertView.findViewById(R.id.signup_list_exhibition_address);
holder.mExhibitionSponsor = (TextView) convertView.findViewById(R.id.signup_list_exhibition_sponsor);
holder.mSignupStatus = (ImageView) convertView.findViewById(R.id.signup_list_imageview_signup);
holder.mEnrollMessage = (ImageView) convertView.findViewById(R.id.message_icon_signup);
holder.mExhibitionTheme.setTypeface(typeface_bold);
holder.mExhibitionDate.setTypeface(typeface);
holder.mExhibitionAddress.setTypeface(typeface);
holder.mExhibitionSponsor.setTypeface(typeface);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
holder.mSignupStatus.setImageBitmap(null);
holder.mEnrollMessage.setVisibility(View.GONE);
holder.mSignupStatus.setPadding(0, 0, 0, 0);
holder.mSignupStatus.setOnClickListener(null);
holder.mExhibitionIcon.setImageBitmap(null);
}
char showStatus = ' ';
if(null != data.get(position).getStatus()){
showStatus = (data.get(position).getStatus() + " ").charAt(0);
}
showStatusIcon(showStatus,holder.mSignupStatus,exKey,position);
holder.mExhibitionTheme.setText(data.get(position).getName());
holder.mExhibitionSponsor.setText(data.get(position).getOrganizer());
holder.mExhibitionAddress.setText(data.get(position).getAddress());
holder.mExhibitionDate.setText(data.get(position).getDate());
ImageURLUtil.loadImage(Tool.makeExhibitionIconURL(exKey),
holder.mExhibitionIcon);
int count = Integer.valueOf(data.get(position).getCount());
if(count > 0){
holder.mEnrollMessage.setVisibility(View.VISIBLE);
}
return convertView;
}
/**
* 根据审核的状态显示各个展会的状态图片
* 状态为 P: 表示正在审核中
* 状态为 A: 表示正在审核通过
* 状态为 D: 表示正在审核未通过
* 状态为 ' ': 表示正在未报名该展会
* @param showStatus 审核状态
* @param imageView 显示状态图片的控件
* @param exKey 展会的key
* @param position 该展会在数据列表中的索引位置
*/
private void showStatusIcon(char showStatus,ImageView imageView,
final String exKey,final int position){
switch (showStatus){
case 'P':
imageView.setImageResource(R.drawable.examine);
break;
case 'A':
imageView.setImageResource(R.drawable.pass);
SaveQrcodeTask saveQrcodeTask = new SaveQrcodeTask(exKey);
saveQrcodeTask.execute();
break;
case 'D':
imageView.setImageResource(R.drawable.no_pass);
break;
default:
imageView.setImageResource(R.drawable.signup_font_btn);
imageView.setOnClickListener(new SignupClickListener(context,exKey));
/*imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(context)
.setTitle("注意")
.setMessage("您确认要删除该展会吗?")
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SharedPreferencesUtil.removeObject(exKey,context,StringPools.SCAN_EXHIBITION_DATA);
data.remove(position);
notifyDataSetChanged();
}
})
.setNegativeButton("取消",null)
.show();
}
});*/
break;
}
}
public class ViewHolder {
TextView mExhibitionTheme, mExhibitionDate, mExhibitionAddress, mExhibitionSponsor;
ImageView mExhibitionIcon,mSignupStatus;
ImageView mEnrollMessage;
}
class SaveQrcodeTask extends AsyncTask<Void,Integer,Integer> {
private String exKey;
SaveQrcodeTask(String exKey) {
this.exKey = exKey;
}
@Override
protected Integer doInBackground(Void... params) {
new Thread(new Runnable() {
@Override
public void run() {
String path = Tool.makeQrcodeURL(exKey,mStrToken);
try {
byte[] data = ImageService.getImage(path);
FileService service = new FileService(context);
String filename = exKey + "qrcode.png";
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
service.saveToSDCard(filename, data);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
return null;
}
}
}