AudioAdapter.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package jiguang.chat.adapter;
  2. import android.animation.AnimatorSet;
  3. import android.animation.ObjectAnimator;
  4. import android.util.SparseBooleanArray;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.BaseAdapter;
  9. import android.widget.CheckBox;
  10. import android.widget.ImageView;
  11. import android.widget.LinearLayout;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
  17. import jiguang.chat.activity.fragment.AudioFragment;
  18. import jiguang.chat.entity.FileItem;
  19. import jiguang.chat.entity.FileType;
  20. import jiguang.chat.entity.UpdateSelectedStateListener;
  21. import jiguang.chat.utils.ViewHolder;
  22. public class AudioAdapter extends BaseAdapter {
  23. private List<FileItem> mList;
  24. private AudioFragment mFragment;
  25. private LayoutInflater mInflater;
  26. private SparseBooleanArray mSelectMap = new SparseBooleanArray();
  27. private List<String> mSelectedList = new ArrayList<String>();
  28. private UpdateSelectedStateListener mListener;
  29. public AudioAdapter(AudioFragment fragment, List<FileItem> list) {
  30. this.mFragment = fragment;
  31. this.mList = list;
  32. this.mInflater = LayoutInflater.from(fragment.getContext());
  33. }
  34. @Override
  35. public int getCount() {
  36. return mList.size();
  37. }
  38. @Override
  39. public Object getItem(int i) {
  40. return mList.get(i);
  41. }
  42. @Override
  43. public long getItemId(int i) {
  44. return i;
  45. }
  46. @Override
  47. public View getView(final int position, View convertView, ViewGroup viewGroup) {
  48. final FileItem item = mList.get(position);
  49. if (null == convertView) {
  50. convertView = mInflater.inflate(R.layout.item_audio, null);
  51. }
  52. LinearLayout itemLl = ViewHolder.get(convertView, R.id.audio_item_ll);
  53. final CheckBox checkBox = ViewHolder.get(convertView, R.id.audio_cb);
  54. ImageView icon = ViewHolder.get(convertView, R.id.audio_iv);
  55. TextView title = ViewHolder.get(convertView, R.id.audio_title);
  56. TextView size = ViewHolder.get(convertView, R.id.audio_size);
  57. TextView date = ViewHolder.get(convertView, R.id.audio_date);
  58. itemLl.setOnClickListener(new View.OnClickListener() {
  59. @Override
  60. public void onClick(View view) {
  61. if (checkBox.isChecked()) {
  62. checkBox.setChecked(false);
  63. mSelectMap.delete(position);
  64. mListener.onUnselected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
  65. } else {
  66. if (mFragment.getTotalCount() < 5) {
  67. if (mFragment.getTotalSize() + item.getLongFileSize() < 10485760.0) {
  68. checkBox.setChecked(true);
  69. mSelectMap.put(position, true);
  70. mListener.onSelected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
  71. addAnimation(checkBox);
  72. } else {
  73. Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
  74. .file_size_over_limit_hint), Toast.LENGTH_SHORT).show();
  75. }
  76. } else {
  77. Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
  78. .size_over_limit_hint), Toast.LENGTH_SHORT).show();
  79. }
  80. }
  81. }
  82. });
  83. checkBox.setOnClickListener(new View.OnClickListener() {
  84. @Override
  85. public void onClick(View v) {
  86. if (checkBox.isChecked()) {
  87. if (mFragment.getTotalCount() < 5) {
  88. if (mFragment.getTotalSize() + item.getLongFileSize() < 10485760.0) {
  89. checkBox.setChecked(true);
  90. mSelectMap.put(position, true);
  91. mListener.onSelected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
  92. addAnimation(checkBox);
  93. } else {
  94. checkBox.setChecked(false);
  95. Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
  96. .file_size_over_limit_hint), Toast.LENGTH_SHORT).show();
  97. }
  98. } else {
  99. checkBox.setChecked(false);
  100. Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
  101. .size_over_limit_hint), Toast.LENGTH_SHORT).show();
  102. }
  103. } else {
  104. mSelectMap.delete(position);
  105. mListener.onUnselected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
  106. }
  107. }
  108. });
  109. checkBox.setChecked(mSelectMap.get(position));
  110. title.setText(item.getFileName());
  111. size.setText(item.getFileSize());
  112. date.setText(item.getDate());
  113. return convertView;
  114. }
  115. private void addAnimation(View view) {
  116. float[] vaules = new float[]{0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.25f, 1.2f, 1.15f, 1.1f, 1.0f};
  117. AnimatorSet set = new AnimatorSet();
  118. set.playTogether(ObjectAnimator.ofFloat(view, "scaleX", vaules),
  119. ObjectAnimator.ofFloat(view, "scaleY", vaules));
  120. set.setDuration(150);
  121. set.start();
  122. }
  123. public void setUpdateListener(UpdateSelectedStateListener listener) {
  124. this.mListener = listener;
  125. }
  126. }