package org.aisen.weibo.sina.ui.fragment.publish; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ImageView; import org.aisen.android.network.task.TaskException; import org.aisen.android.support.inject.ViewInject; import org.aisen.android.ui.fragment.AGridFragment; import org.aisen.android.ui.fragment.adapter.ARecycleViewItemView; import org.aisen.android.ui.fragment.itemview.IITemView; import org.aisen.android.ui.fragment.itemview.IItemViewCreator; 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.sqlit.EmotionsDB; import java.util.ArrayList; import java.util.List; /** * 表情窗口 * * @author wangdan * */ public class EmotionFragment extends AGridFragment<Emotion, Emotions> implements OnItemClickListener, OnItemLongClickListener { public static EmotionFragment newInstance() { return new EmotionFragment(); } private OnEmotionSelectedListener onEmotionSelectedListener; @Override public int inflateContentView() { return R.layout.ui_emotions; } @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 public IItemViewCreator<Emotion> configItemViewCreator() { return new IItemViewCreator<Emotion>() { @Override public View newContentView(LayoutInflater inflater, ViewGroup parent, int viewType) { return inflater.inflate(R.layout.item_emotion, parent, false); } @Override public IITemView<Emotion> newItemView(View convertView, int viewType) { return new EmotionItemView(convertView); } }; } @Override public void requestData(RefreshMode mode) { // 浪小花-lxh_ new EmotionTask(mode).execute("d_"); } class EmotionItemView extends ARecycleViewItemView<Emotion> { @ViewInject(id = R.id.imgEmotion) ImageView imgEmotion; public EmotionItemView(View itemView) { super(getActivity(), itemView); } @Override public void onBindData(View convertView, Emotion data, int position) { imgEmotion.setImageBitmap(BitmapFactory.decodeByteArray(data.getData(), 0, data.getData().length)); } } class EmotionTask extends APagingTask<String, Void, Emotions> { public EmotionTask(RefreshMode mode) { super(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("h_"); 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); } }