package de.tudarmstadt.informatik.hostage.ui2.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.ViewSwitcher; import java.util.List; import de.tudarmstadt.informatik.hostage.R; import de.tudarmstadt.informatik.hostage.ui2.listeners.OnSwipeTouchListener; import de.tudarmstadt.informatik.hostage.ui2.model.ProfileListItem; /** * @author Alexander Brakowski * @created 14.01.14 18:00 */ public class ProfileManagerListAdapter extends ArrayAdapter { private class ViewHolder { public TextView labelView; public TextView textView; public ImageView imageSelected; public ImageView itemIcon; public ImageButton buttonEdit; public ImageButton buttonDelete; public ViewSwitcher switcher; public ImageView itemIconBack; public TextView labelViewBack; } private final Context context; private final List values; private float mLastX, upX; private static final int MIN_DISTANCE = 50; private Animation inAnimationRL; private Animation outAnimationRL; private Animation inAnimationLR; private Animation outAnimationLR; public ProfileManagerListAdapter(Context context, List objects) { super(context, R.layout.profile_manager_list_item, objects); this.context = context; this.values = objects; inAnimationRL = AnimationUtils.loadAnimation(getContext(), R.anim.in_right_to_left); outAnimationRL = AnimationUtils.loadAnimation(getContext(), R.anim.out_right_to_left); inAnimationLR = AnimationUtils.loadAnimation(getContext(), R.anim.in_left_to_right); outAnimationLR = AnimationUtils.loadAnimation(getContext(), R.anim.out_left_to_right); } @Override public View getView(final int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = convertView; ViewHolder holder = null; final ProfileListItem item = values.get(position); if(rowView == null){ rowView = inflater.inflate(R.layout.profile_manager_list_item, parent, false); holder = new ViewHolder(); holder.labelView = (TextView) rowView.findViewById(R.id.profile_manager_item_label); holder.textView = (TextView) rowView.findViewById(R.id.profile_manager_item_text); holder.imageSelected = (ImageView) rowView.findViewById(R.id.profile_manager_item_activated); holder.itemIcon = (ImageView) rowView.findViewById(R.id.profile_manager_item_image); holder.buttonEdit = (ImageButton) rowView.findViewById(R.id.profile_manager_item_button_edit); holder.buttonDelete = (ImageButton) rowView.findViewById(R.id.profile_manager_item_button_delete); holder.switcher = (ViewSwitcher) rowView.findViewById(R.id.profile_manager_viewswitcher); holder.itemIconBack = (ImageView) rowView.findViewById(R.id.profile_manager_item_image_back); holder.labelViewBack = (TextView) rowView.findViewById(R.id.profile_manager_item_label_back); rowView.setTag(holder); } else { holder = (ViewHolder) rowView.getTag(); } final ViewSwitcher switcher = holder.switcher; holder.switcher.setOnTouchListener(new OnSwipeTouchListener(){ public void onSwipeRight() { if(item.isBackVisible){ switcher.setInAnimation(inAnimationLR); switcher.setOutAnimation(outAnimationLR); switcher.setDisplayedChild(0); item.isBackVisible = false; } } public void onSwipeLeft() { if(!item.isBackVisible){ switcher.setInAnimation(inAnimationRL); switcher.setOutAnimation(outAnimationRL); switcher.setDisplayedChild(1); item.isBackVisible = true; } } }); holder.buttonEdit.setFocusable(false); holder.buttonDelete.setFocusable(false); holder.buttonEdit.setFocusableInTouchMode(false); holder.buttonDelete.setFocusableInTouchMode(false); holder.textView.setText(item.label); holder.labelView.setText(item.text); holder.labelViewBack.setText(item.text); holder.itemIconBack.setImageBitmap(item.icon); holder.itemIcon.setImageBitmap(item.icon); holder.switcher.setInAnimation(null); holder.switcher.setOutAnimation(null); if(item.isBackVisible){ holder.switcher.setDisplayedChild(1); } else { holder.switcher.setDisplayedChild(0); } holder.switcher.setInAnimation(inAnimationRL); holder.switcher.setOutAnimation(outAnimationRL); if(!item.activated){ RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams )holder.textView.getLayoutParams(); lp.setMargins(0,0,0,0); holder.textView.setLayoutParams(lp); holder.imageSelected.setVisibility(View.GONE); } return rowView; } }