package org.yuttadhammo.buddydroid.interfaces; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.TimeZone; import org.yuttadhammo.buddydroid.BPUserActivity; import org.yuttadhammo.buddydroid.Buddypress; import org.yuttadhammo.buddydroid.R; import com.koushikdutta.urlimageviewhelper.UrlImageViewHelper; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.text.format.DateUtils; import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class FriendsListAdapter extends ArrayAdapter<Object> { protected String TAG = "GroupsListAdapter"; public SparseIntArray expanded = new SparseIntArray(); private Activity activity; public FriendsListAdapter(Activity _activity, Object[] rss) { super(_activity, 0, rss); activity = _activity; } @Override public View getView(final int position, View convertView, ViewGroup parent) { LayoutInflater inflater = activity.getLayoutInflater(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); // Inflate the views from XML View rowView = inflater.inflate(R.layout.friend_item, null); final HashMap<?,?> entryMap = (HashMap<?, ?>) getItem(position); TextView titleView = (TextView) rowView.findViewById(R.id.title); TextView descView = (TextView) rowView.findViewById(R.id.description); TextView dateView = (TextView) rowView.findViewById(R.id.date); try { String text = sanitizeText((String) entryMap.get("latest_update")); String title = sanitizeText((String)entryMap.get("display_name")).replaceFirst(".*\"(.*)\".*", "$1"); String dates = (String)entryMap.get("last_activity"); // add text descView.setText(text); titleView.setText(title); if(entryMap.containsKey("avatar")) { HashMap<?,?> avatars = (HashMap<?, ?>) entryMap.get("avatar"); String imgurl = (String)avatars.get("full"); ImageView iv = (ImageView) rowView.findViewById(R.id.feed_image); UrlImageViewHelper.setUrlDrawable(iv, imgurl); iv.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(activity, BPUserActivity.class); intent.putExtra("user_id", (String)entryMap.get("id")); activity.startActivityForResult(intent, Buddypress.RESULT_USER); } }); } // add date //2013-03-11 20:32:01 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefault()); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); Date date = simpleDateFormat.parse(dates); if(prefs.getBoolean("relative_date",true)) { CharSequence dateString = DateUtils.getRelativeTimeSpanString(date.getTime(), new Date().getTime(), DateUtils.SECOND_IN_MILLIS); dateView.setText(String.format(activity.getString(R.string.active_x), dateString)); } else { // check if today or not Calendar now = Calendar.getInstance(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); DateFormat df; if(now.get(Calendar.YEAR) == calendar.get(Calendar.YEAR) && now.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) && now.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)) df = android.text.format.DateFormat.getTimeFormat(activity); else df = android.text.format.DateFormat.getMediumDateFormat(activity); dateView.setText(String.format(activity.getString(R.string.active_x), df.format(date))); } } catch (Exception e) { e.printStackTrace(); } return rowView; } private String sanitizeText(String string) { if(string != null) string = string.replace("\\\"", "\"").replace("\\'", "'"); return string; } }