package com.diandi.demo.ui.fragment; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; 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.ListView; import com.diandi.demo.R; import com.diandi.demo.adapter.MessageRecentAdapter; import com.diandi.demo.ui.activity.ChatActivity; import com.diandi.demo.widget.ClearEditText; import com.diandi.demo.widget.dialog.DialogTips; import cn.bmob.im.bean.BmobChatUser; import cn.bmob.im.bean.BmobRecent; import cn.bmob.im.db.BmobDB; /** * ******************************************************************************* * ********* Author : klob(kloblic@gmail.com) . * ********* Date : 2014-11-29 . * ********* Time : 11:46 . * ********* Project name : Diandi1.18 . * ********* Version : 1.0 * ********* Copyright @ 2014, klob, All Rights Reserved * ******************************************************************************* */ public class RecentFragment extends BaseFragment implements OnItemClickListener, OnItemLongClickListener { private ClearEditText mClearEditText; private ListView mRecentListview; private MessageRecentAdapter mMessageRecentAdapter; private boolean mHidden; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_recent, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); findView(); initView(); } @Override void findView() { mRecentListview = (ListView) findViewById(R.id.fragment_recent_listview); mClearEditText = (ClearEditText) findViewById(R.id.fragment_recent_edit); } public void initView() { initTopBarForOnlyTitle("会话"); mRecentListview.setOnItemClickListener(this); mRecentListview.setOnItemLongClickListener(this); mMessageRecentAdapter = new MessageRecentAdapter(getActivity(), R.layout.item_conversation, BmobDB.create(getActivity()).queryRecents()); mRecentListview.setAdapter(mMessageRecentAdapter); bindEvent(); } @Override void bindEvent() { mClearEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { mMessageRecentAdapter.getFilter().filter(s); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); } private void deleteRecent(BmobRecent recent) { mMessageRecentAdapter.remove(recent); BmobDB.create(getActivity()).deleteRecent(recent.getTargetid()); BmobDB.create(getActivity()).deleteMessages(recent.getTargetid()); } @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub BmobRecent recent = mMessageRecentAdapter.getItem(position); showDeleteDialog(recent); return true; } public void showDeleteDialog(final BmobRecent recent) { DialogTips dialog = new DialogTips(getActivity(), recent.getUserName(), "删除会话", "确定", true, true); dialog.SetOnSuccessListener(new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int userId) { deleteRecent(recent); } }); dialog.show(); dialog = null; } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub BmobRecent recent = mMessageRecentAdapter.getItem(position); //重置未读消息 BmobDB.create(getActivity()).resetUnread(recent.getTargetid()); //组装聊天对象 BmobChatUser user = new BmobChatUser(); user.setAvatar(recent.getAvatar()); user.setNick(recent.getNick()); user.setUsername(recent.getUserName()); user.setObjectId(recent.getTargetid()); Intent intent = new Intent(getActivity(), ChatActivity.class); intent.putExtra("user", user); startAnimActivity(intent); } @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); this.mHidden = hidden; if (!hidden) { refresh(); } } public void refresh() { try { getActivity().runOnUiThread(new Runnable() { public void run() { mMessageRecentAdapter = new MessageRecentAdapter(getActivity(), R.layout.item_conversation, BmobDB.create(getActivity()).queryRecents()); mRecentListview.setAdapter(mMessageRecentAdapter); } }); } catch (Exception e) { e.printStackTrace(); } } @Override public void onResume() { super.onResume(); if (!mHidden) { refresh(); } } }