package com.mobmonkey.mobmonkeyandroid.arrayadapters; import java.util.ArrayList; import org.json.JSONException; import org.json.JSONObject; import com.mobmonkey.mobmonkeyandroid.R; import com.mobmonkey.mobmonkeyandroid.utils.MMUtility; import com.mobmonkey.mobmonkeysdk.utils.MMLocationListener; import com.mobmonkey.mobmonkeysdk.utils.MMLocationManager; import com.mobmonkey.mobmonkeysdk.utils.MMSDKConstants; import android.content.Context; import android.graphics.Color; import android.location.Location; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; /** * @author Dezapp, LLC * */ public class MMFavoritesArrayAdapter extends ArrayAdapter<JSONObject> { private Location location; private Context context; private LayoutInflater layoutInflater; private int listRowLayout; private ArrayList<JSONObject> favoriteLocations; public MMFavoritesArrayAdapter(Context context, int listRowLayout, ArrayList<JSONObject> favoriteLocations) { super(context, listRowLayout, favoriteLocations); this.location = MMLocationManager.getGPSLocation(); this.context = context; this.layoutInflater = LayoutInflater.from(context); this.listRowLayout = listRowLayout; this.favoriteLocations = favoriteLocations; } /* (non-Javadoc) * @see android.widget.ArrayAdapter#getView(int, android.view.View, android.view.ViewGroup) */ @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView == null) { convertView = layoutInflater.inflate(listRowLayout, null); viewHolder = new ViewHolder(); viewHolder.tvLocName = (TextView) convertView.findViewById(R.id.tvlocname); viewHolder.tvLocDist = (TextView) convertView.findViewById(R.id.tvlocdist); viewHolder.tvLocAddr = (TextView) convertView.findViewById(R.id.tvlocaddr); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } try { JSONObject jObj = favoriteLocations.get(position); viewHolder.tvLocName.setText(jObj.getString(MMSDKConstants.JSON_KEY_NAME)); viewHolder.tvLocDist.setText(MMUtility.calcDist(location, jObj.getDouble(MMSDKConstants.JSON_KEY_LATITUDE), jObj.getDouble(MMSDKConstants.JSON_KEY_LONGITUDE)) + MMSDKConstants.DEFAULT_STRING_SPACE + context.getString(R.string.miles)); String address = MMSDKConstants.DEFAULT_STRING_EMPTY; address += jObj.isNull(MMSDKConstants.JSON_KEY_ADDRESS) ? MMSDKConstants.DEFAULT_STRING_EMPTY : jObj.getString(MMSDKConstants.JSON_KEY_ADDRESS); address += MMSDKConstants.DEFAULT_STRING_NEWLINE; String localityRegion = MMSDKConstants.DEFAULT_STRING_EMPTY; localityRegion += jObj.isNull(MMSDKConstants.JSON_KEY_LOCALITY) ? MMSDKConstants.DEFAULT_STRING_EMPTY : jObj.getString(MMSDKConstants.JSON_KEY_LOCALITY); localityRegion += jObj.isNull(MMSDKConstants.JSON_KEY_LOCALITY) || jObj.isNull(MMSDKConstants.JSON_KEY_REGION) ? MMSDKConstants.DEFAULT_STRING_EMPTY : MMSDKConstants.DEFAULT_STRING_COMMA_SPACE; localityRegion += jObj.isNull(MMSDKConstants.JSON_KEY_REGION) ? MMSDKConstants.DEFAULT_STRING_EMPTY : jObj.getString(MMSDKConstants.JSON_KEY_REGION); viewHolder.tvLocAddr.setText(address + localityRegion); } catch (JSONException e) { e.printStackTrace(); } convertView.setBackgroundColor(Color.TRANSPARENT); return convertView; } /* (non-Javadoc) * @see android.widget.ArrayAdapter#getItem(int) */ @Override public JSONObject getItem(int position) { return favoriteLocations.get(position); } /** * * @author Dezapp, LLC * */ private class ViewHolder { TextView tvLocName; TextView tvLocDist; TextView tvLocAddr; } }