Advertisement
Guest User

verified

a guest
Apr 9th, 2015
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.68 KB | None | 0 0
  1. public class StackTestActivity extends Activity {
  2.  
  3.     @Override
  4.     protected void onCreate(Bundle savedInstanceState) {
  5.         super.onCreate(savedInstanceState);
  6.         for (int i = 0; i < 200; ++i) {
  7.             people.add(new Person(i));
  8.         }
  9.         GridView grid = new GridView(this);
  10.         grid.setNumColumns(5);
  11.         grid.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
  12.         SomeAdapter a = new SomeAdapter();
  13.         grid.setAdapter(a);
  14.         setContentView(grid);
  15.     }
  16.  
  17.     public static class Person {
  18.         public String id;
  19.         boolean isSelected;
  20.         public void toggleSelected() { isSelected = !isSelected; }
  21.         public boolean isSelected() { return isSelected; }
  22.  
  23.         public Person(int pos) {
  24.             id = String.valueOf(pos);
  25.             isSelected = false;
  26.         }
  27.     }
  28.  
  29.     ArrayList<Person> people = new ArrayList<>();
  30.    
  31.     public class SomeAdapter extends BaseAdapter {
  32.         @Override
  33.         public int getCount() {
  34.             return people.size();
  35.         }
  36.  
  37.         @Override
  38.         public Person getItem(int position) {
  39.             return people.get(position);
  40.         }
  41.  
  42.         @Override
  43.         public long getItemId(int position) {
  44.             return position;
  45.         }
  46.  
  47.         @Override
  48.         public View getView(int position, View convertView, ViewGroup parent) {
  49.  
  50.             Person person = people.get(position);
  51.             ViewHolder vh = null;
  52.  
  53.             if (convertView == null) {
  54.                 convertView = getRow();
  55.                 vh = new ViewHolder(convertView);
  56.                 convertView.setTag(R.id.debug3, vh);
  57.             } else {
  58.                 vh = (ViewHolder) convertView.getTag(R.id.debug3);
  59.             }
  60.  
  61.             vh.tv.setText(person.id);
  62.  
  63.             ObjectAnimator anim = (ObjectAnimator) convertView.getTag(R.id.debug5);
  64.             if (person.isSelected()) {
  65.                 if (anim == null) {
  66.                     anim = getAnimator(convertView);
  67.                     anim.setTarget(convertView);
  68.                     anim.start();
  69.                     convertView.setTag(R.id.debug5, anim);
  70.                 }
  71.             } else {
  72.                 if (anim != null) anim.cancel();
  73.                 convertView.setTag(R.id.debug5, null);
  74.             }
  75.  
  76.             convertView.setTag(R.id.debug4, person);
  77.             convertView.setOnClickListener(new View.OnClickListener() {
  78.                 @Override public void onClick(View v) {
  79.                     Person person = (Person) v.getTag(R.id.debug4);
  80.                     person.toggleSelected();
  81.                     notifyDataSetChanged();
  82.                 }
  83.             });
  84.  
  85.             return convertView;
  86.         }
  87.     }
  88.  
  89.     public ObjectAnimator getAnimator(View v) {
  90.         ObjectAnimator a = ObjectAnimator.ofFloat(v, "rotation", 0, -2, 0, 2, 0);
  91.         a.setDuration(300);
  92.         a.setRepeatCount(ObjectAnimator.INFINITE);
  93.         return a;
  94.     }
  95.  
  96.     public static class ViewHolder {
  97.         TextView tv;
  98.  
  99.         public ViewHolder(View convertView) {
  100.             tv = (TextView) convertView.findViewById(R.id.debug_one);
  101.         }
  102.     }
  103.  
  104.     public View getRow() {
  105.         FrameLayout root = new FrameLayout(StackTestActivity.this);
  106.  
  107.         TextView tv = new TextView(StackTestActivity.this);
  108.  
  109.         tv.setId(R.id.debug_one);
  110.         tv.setTextSize(60);
  111.         tv.setPadding(20, 20, 20, 20);
  112.  
  113.         FrameLayout.LayoutParams lps = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  114.         lps.gravity = Gravity.CENTER;
  115.  
  116.         tv.setLayoutParams(lps);
  117.  
  118.         root.addView(tv);
  119.         return root;
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement