package org.aisen.weibo.sina.ui.fragment.publish; import java.util.ArrayList; import java.util.List; import java.util.UUID; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.support.bean.Emotion; import org.aisen.weibo.sina.support.bean.Emotions; import org.aisen.weibo.sina.support.db.EmotionsDB; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ImageView; import com.m.support.Inject.ViewInject; import com.m.support.adapter.ABaseAdapter.AbstractItemView; import com.m.support.task.TaskException; import com.m.ui.fragment.AGridFragment; /** * 表情窗口 * * @author wangdan * */ public class EmotionFragment extends AGridFragment<Emotion, Emotions> implements OnItemClickListener, OnItemLongClickListener { public static EmotionFragment newInstance() { return new EmotionFragment(); } private OnEmotionSelectedListener onEmotionSelectedListener; @Override protected int inflateContentView() { return R.layout.lay_emotions; } @Override protected void config(RefreshConfig config) { super.config(config); config.animEnable = false; config.savePosition = false; } @Override protected void layoutInit(LayoutInflater inflater, Bundle savedInstanceSate) { super.layoutInit(inflater, savedInstanceSate); getRefreshView().setOnItemClickListener(this); getRefreshView().setOnItemLongClickListener(this); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (onEmotionSelectedListener != null) onEmotionSelectedListener.onEmotionSelected(getAdapterItems().get(position)); } @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { showMessage(getAdapterItems().get(position).getKey()); return true; } @Override protected AbstractItemView<Emotion> newItemView() { return new EmotionItemView(); } @Override protected void requestData(RefreshMode mode) { // 浪小花-lxh_ new EmotionTask(mode).execute("d_"); } class EmotionItemView extends AbstractItemView<Emotion> { @ViewInject(id = R.id.imgEmotion) ImageView imgEmotion; @Override public int inflateViewId() { return R.layout.item_emotion; } @Override public void bindingData(View convertView, Emotion data) { imgEmotion.setImageBitmap(BitmapFactory.decodeByteArray(data.getData(), 0, data.getData().length)); } } class EmotionTask extends PagingTask<String, Void, Emotions> { public EmotionTask(RefreshMode mode) { super(UUID.randomUUID().toString(), mode); } @Override protected List<Emotion> parseResult(Emotions result) { return result.getEmotions(); } @Override protected Emotions workInBackground(RefreshMode mode, String previousPage, String nextPage, String... params) throws TaskException { // return EmotionsDB.getEmotions(params[0]); Emotions es = new Emotions(); es.setEmotions(new ArrayList<Emotion>()); Emotions emotions = EmotionsDB.getEmotions("d_"); es.getEmotions().addAll(emotions.getEmotions()); emotions = EmotionsDB.getEmotions("hs_"); es.getEmotions().addAll(emotions.getEmotions()); emotions = EmotionsDB.getEmotions("f_"); es.getEmotions().addAll(emotions.getEmotions()); emotions = EmotionsDB.getEmotions("o_"); es.getEmotions().addAll(emotions.getEmotions()); emotions = EmotionsDB.getEmotions("w_"); es.getEmotions().addAll(emotions.getEmotions()); emotions = EmotionsDB.getEmotions("l_"); es.getEmotions().addAll(emotions.getEmotions()); // emotions = EmotionsDB.getEmotions("lxh_"); // es.getEmotions().addAll(emotions.getEmotions()); return es; } } public void setOnEmotionListener(OnEmotionSelectedListener onEmotionSelectedListener) { this.onEmotionSelectedListener = onEmotionSelectedListener; } public interface OnEmotionSelectedListener { public void onEmotionSelected(Emotion emotion); } }