package com.tencent.hq.qq.ui.fragment; import com.tencent.hq.qq.R; import com.tencent.hq.qq.adapter.MessageRecentAdapter; import com.tencent.hq.qq.ui.ChatActivity; import com.tencent.hq.qq.ui.FragmentBase; import com.tencent.hq.qq.ui.MainActivity; import com.tencent.hq.qq.widget.CircleImageView; import com.tencent.hq.qq.widget.ClearEditText; import com.tencent.hq.qq.widget.HeaderLayout; import com.tencent.hq.qq.widget.dialog.DialogTips; import com.tencent.hq.qq.widget.residemenu.ResideMenu; 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.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ListView; import cn.bmob.im.bean.BmobChatUser; import cn.bmob.im.bean.BmobRecent; import cn.bmob.im.db.BmobDB; /** * @author htq * @github:https://github.com/HuTianQi * @blog:http://blog.csdn.net/htq__ */ public class RecentFragment extends FragmentBase implements OnItemClickListener,OnItemLongClickListener{ ClearEditText mClearEditText; ListView listview; MessageRecentAdapter adapter; @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); initView(); initTitleBarAvatar(); } private void initTitleBarAvatar() { HeaderLayout mHeaderLayout=(HeaderLayout)findViewById(R.id.common_actionbar); CircleImageView avatar=(CircleImageView)mHeaderLayout.findViewById(R.id.title_bar_avatar); avatar.setVisibility(View.VISIBLE); avatar.setOnClickListener(openMenu); } private OnClickListener openMenu=new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if(((MainActivity)getActivity()).resideMenu.isOpened()) ((MainActivity)getActivity()).resideMenu.closeMenu(); else ((MainActivity)getActivity()).resideMenu.openMenu(ResideMenu.DIRECTION_LEFT); } }; private void initView(){ initTopBarForOnlyTitle("会话"); listview = (ListView)findViewById(R.id.list); listview.setOnItemClickListener(this); listview.setOnItemLongClickListener(this); adapter = new MessageRecentAdapter(getActivity(), R.layout.item_conversation, BmobDB.create(getActivity()).queryRecents()); listview.setAdapter(adapter); mClearEditText = (ClearEditText)findViewById(R.id.et_msg_search); mClearEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { adapter.getFilter().filter(s); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); } /** ɾ��Ự * deleteRecent * @param @param recent * @return void * @throws */ private void deleteRecent(BmobRecent recent){ adapter.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 = adapter.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 = adapter.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); } private boolean hidden; @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); this.hidden = hidden; if(!hidden){ refresh(); } } public void refresh(){ try { getActivity().runOnUiThread(new Runnable() { public void run() { adapter = new MessageRecentAdapter(getActivity(), R.layout.item_conversation, BmobDB.create(getActivity()).queryRecents()); listview.setAdapter(adapter); } }); } catch (Exception e) { e.printStackTrace(); } } @Override public void onResume() { super.onResume(); if(!hidden){ refresh(); } } }