package it.demo.twitterlike.android.ui.adapters; import it.demo.twitterlike.android.domain.InternalUserProfile; import it.demo.twitterlike.android.tasks.AddFollowTask; import it.demo.twitterlike.android.tasks.RemoveFollowTask; import it.demo.twitterlike.android.ui.AbstractAsyncActivity; import it.demo.twitterlike.android.ui.R; import it.demo.twitterlike.android.utils.UserUtils; import java.util.List; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.telly.groundy.Groundy; public class UserListAdapter extends ExtendibleArrayAdapter<InternalUserProfile> { public UserListAdapter(Context context) { super(context); } public UserListAdapter(Context context, List<InternalUserProfile> users) { super(context, users); } @Override public View getView(int position, View convertView, ViewGroup parent) { final InternalUserProfile item = getItem(position); ViewHolder holder; if (convertView == null) { convertView = getLayoutInflater().inflate( R.layout.adapter_userselector_row, null); holder = new ViewHolder(); holder.ivUserSelectorIcon = (ImageView) convertView .findViewById(R.id.ivUserSelectorIcon); holder.ivFollowUser = convertView.findViewById(R.id.ivFollowUser); holder.ivFollowUser.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { InternalUserProfile item = (InternalUserProfile) v.getTag(); Groundy.create(AddFollowTask.class) .callback(getContext()) .arg(AddFollowTask.USER_PARAMETER, item.getUser().getId()) .callbackManager( ((AbstractAsyncActivity) getContext()) .getCallbacksManager()) .queueUsing(getContext()); } }); holder.ivRemoveUser = convertView.findViewById(R.id.ivRemoveUser); holder.ivRemoveUser.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { InternalUserProfile item = (InternalUserProfile) v.getTag(); Groundy.create(RemoveFollowTask.class) .callback(getContext()) .arg(RemoveFollowTask.USER_PARAMETER, item.getUser().getId()) .callbackManager( ((AbstractAsyncActivity) getContext()) .getCallbacksManager()) .queueUsing(getContext()); } }); holder.tvUserSelectorTitle = (TextView) convertView .findViewById(R.id.tvUserSelectorTitle); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.ivUserSelectorIcon.setImageResource(getUserResourceId(item .getUser().getFirstName())); holder.tvUserSelectorTitle.setText(UserUtils.getUserFullName(item .getUser())); holder.ivRemoveUser.setVisibility(item.isFollow() ? View.VISIBLE : View.GONE); holder.ivFollowUser.setVisibility(item.isFollow() ? View.GONE : View.VISIBLE); holder.ivFollowUser.setTag(item); holder.ivRemoveUser.setTag(item); return convertView; } private static int getUserResourceId(String name) { final int result; if (isMale(name)) { result = R.drawable.ic_user_man_icon; } else { result = R.drawable.ic_user_woman_icon; } return result; } private static boolean isMale(String name) { return name != null && (!name.endsWith("a")); } private static class ViewHolder { private TextView tvUserSelectorTitle; private ImageView ivUserSelectorIcon; private View ivFollowUser, ivRemoveUser; } }