package com.example.android.foldercamera; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ArgbEvaluator; import android.animation.ValueAnimator; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Rect; import android.os.Environment; import android.os.Handler; import android.preference.Preference; import android.preference.PreferenceManager; import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; /** * Created by Andrew on 8/14/2015. */ public class CustomAdapter extends BaseAdapter { private static final String TAG = "fc:custom_adapater"; private FolderList mObject; private int mResource; private Context mContext; private Handler mHandler; public CustomAdapter(Context context, int resource, FolderList objects, Handler handler) { super(); mContext = context; mResource = resource; mObject = objects; mHandler = handler; } @Override public int getCount() { return mObject.size(); } @Override public FolderList.Folder getItem(int position) { return mObject.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { FolderList.Folder folder = getItem(position); if (convertView == null) convertView = LayoutInflater.from(mContext).inflate(R.layout.custom_listview, parent, false); Button bt = (Button) convertView.findViewById(R.id.choose_folder_button); bt.setTag(position); bt.setOnClickListener(onClickListener); TextView tv = (TextView) convertView.findViewById(R.id.choose_folder_textview); tv.setTag(position); tv.setBackgroundColor(mContext.getResources().getColor((R.color.primary))); tv.setTextColor(mContext.getResources().getColor((R.color.text_primary))); tv.setOnTouchListener(onTouchListener); tv.setText(folder.getName()); if (folder.getName().equals("default")) bt.setVisibility(View.GONE); return convertView; } View.OnTouchListener onTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(final View v, MotionEvent event) { final int action = event.getAction(); Integer colorFrom = mContext.getResources().getColor((R.color.primary)); Integer colorTo = mContext.getResources().getColor(R.color.primary_dark); ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo); colorAnimation.setDuration(300); colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { v.setBackgroundColor((Integer) animation.getAnimatedValue()); } }); if (action == MotionEvent.ACTION_DOWN) { Log.d(TAG, "finder down"); colorAnimation.start(); } if (action == MotionEvent.ACTION_UP) { Log.d(TAG, "finder up"); int position = (Integer) v.getTag(); v.setBackgroundColor(colorFrom); mHandler.obtainMessage(CustomDialog.DIALOG_LISTVIEW_SELECT, position, 0).sendToTarget(); } if (action == MotionEvent.ACTION_CANCEL) { Log.d(TAG, "action outside"); colorAnimation.reverse(); v.setBackgroundColor(colorFrom); } return true; } }; View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { int position = (Integer) v.getTag(); mHandler.obtainMessage(CustomDialog.DIALOG_DELETE_BUTTON, position, 0).sendToTarget(); } }; public void changeData(FolderList object) { mObject = object; notifyDataSetChanged(); } }