package com.yyquan.jzh.fragment.friend; import android.app.AlertDialog; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.google.gson.Gson; import com.squareup.picasso.Picasso; import com.yyquan.jzh.R; import com.yyquan.jzh.activity.ChatActivity; import com.yyquan.jzh.activity.MainActivity; import com.yyquan.jzh.activity.TransactionFriendActivity; import com.yyquan.jzh.entity.Ip; import com.yyquan.jzh.entity.User; import com.yyquan.jzh.entity.XmppFriend; import com.yyquan.jzh.entity.XmppMessage; import com.yyquan.jzh.entity.XmppUser; import com.yyquan.jzh.util.RecyclerViewDividerItemDecoration; import com.yyquan.jzh.util.SaveUserUtil; import com.yyquan.jzh.util.TimeUtil; import com.yyquan.jzh.util.ToastUtil; import com.yyquan.jzh.view.BadgeView; import com.yyquan.jzh.view.CircleImageView; import com.yyquan.jzh.xmpp.XmppContentProvider; import com.yyquan.jzh.xmpp.XmppService; import com.yyquan.jzh.xmpp.XmppTool; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; /** * Created by Administrator on 2016/1/1. */ public class MessageFragment extends Fragment { View view; RecyclerView rv; List<XmppMessage> list; List<XmppMessage> list_add; String url_icon = Ip.ip + "/YfriendService/DoGetIcon?name="; MyAdapter adapter; String user; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (view == null) { user = SaveUserUtil.loadAccount(getActivity()).getUser(); Log.i("message", "user=" + user); view = inflater.inflate(R.layout.fragment_message, container, false); ButterKnife.bind(this, view); rv = (RecyclerView) view.findViewById(R.id.fragment_messgae_recyclerview); rv.setLayoutManager(new LinearLayoutManager(getActivity()));//设置排列方式 rv.addItemDecoration(new RecyclerViewDividerItemDecoration(getActivity(), RecyclerViewDividerItemDecoration.VERTICAL_LIST)); initialData(); } return view; } public void initialData() { list = new ArrayList<>(); list_add = new ArrayList<>(); //Cursor cursor = XmppService.resolver.query(XmppContentProvider.CONTENT_MESSAGES_URI, null, "select * from message where too=?", new String[]{SaveUserUtil.loadAccount(getActivity()).getUser()}, null); Cursor cursor = XmppService.resolver.query(XmppContentProvider.CONTENT_MESSAGES_URI, null, null, null, null); while (cursor.moveToNext()) { String type = cursor.getString(cursor.getColumnIndex("type")); int id = cursor.getInt(cursor.getColumnIndex("id")); String to = cursor.getString(cursor.getColumnIndex("too")); String username = cursor.getString(cursor.getColumnIndex("username")); String name = cursor.getString(cursor.getColumnIndex("name")); XmppUser user = new XmppUser(username, name); String time = cursor.getString(cursor.getColumnIndex("time")); String content = cursor.getString(cursor.getColumnIndex("content")); int result = cursor.getInt(cursor.getColumnIndex("result")); String main = cursor.getString(cursor.getColumnIndex("main")); XmppMessage xm = new XmppMessage(id, to, type, user, time, content, result, main); if (to.equals(this.user)) { Log.i("message》》》》》》》》》》》", xm.toString() + "\n" + this.user); list.add(xm); } // } } if (list.size() < 1) { rv.setVisibility(View.GONE); } else { rv.setVisibility(View.VISIBLE); adapter = new MyAdapter(); initEvent(); rv.setAdapter(adapter); } } private void initEvent() { adapter.setOnItemClickLitener(new OnItemClickListener() { @Override public void onItemClick(View view, int position) { if (list.get(position).getType().equals("chat")) { if (MainActivity.main != null) { if (MainActivity.main.receiver.manager != null) { MainActivity.main.receiver.manager.cancel(0); } } ContentValues values = new ContentValues(); values.put("result", 0); XmppService.resolver.update(XmppContentProvider.CONTENT_MESSAGES_URI, values, "id=?", new String[]{list.get(position).getId() + ""}); adapter.setData(position); Intent intent = new Intent(getActivity(), ChatActivity.class); User users = new Gson().fromJson(list.get(position).getUser().getName(), User.class); intent.putExtra("xmpp_friend", new XmppFriend(users)); startActivity(intent); } else { Intent intent = new Intent(getActivity(), TransactionFriendActivity.class); intent.putExtra("xmpp_user", list.get(position)); startActivity(intent); } } }); adapter.setOnLongItemClickLitener(new OnLongItemClickListener() { @Override public void onLongItemClick(View view, final int position) { AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); dialog.setTitle("删除信息"); dialog.setMessage("是否删除信息?"); dialog.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { XmppService.resolver.delete(XmppContentProvider.CONTENT_MESSAGES_URI, "id=?", new String[]{list.get(position).getId() + ""}); initialData(); } }); dialog.setNegativeButton("否", null); dialog.show(); } }); } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private OnItemClickListener mOnItemClickLitener; private OnLongItemClickListener mOnLongItemClickLitener; LayoutInflater inflater; void setData(int position) { list.get(position).setResult(0); adapter.notifyDataSetChanged(); } public void setOnItemClickLitener(OnItemClickListener mOnItemClickLitener) { this.mOnItemClickLitener = mOnItemClickLitener; } public void setOnLongItemClickLitener(OnLongItemClickListener mOnLongItemClickLitener) { this.mOnLongItemClickLitener = mOnLongItemClickLitener; } public MyAdapter() { inflater = LayoutInflater.from(getActivity()); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 0 || viewType == 1) { return new FriendHolder(inflater.inflate(R.layout.fragment_message_recyclerview_item, parent, false)); } return null; } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { if (mOnItemClickLitener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pos = holder.getPosition(); mOnItemClickLitener.onItemClick(holder.itemView, pos); } }); } if (mOnLongItemClickLitener != null) { holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int pos = holder.getPosition(); mOnLongItemClickLitener.onLongItemClick(holder.itemView, pos); return false; } }); } if (holder instanceof FriendHolder) { FriendHolder friendHolder = (FriendHolder) holder; // String str[] = list.get(position).getUser().getName().split(";"); User users = new Gson().fromJson(list.get(position).getUser().getName(), User.class); friendHolder.tv_title.setText(users.getNickname()); friendHolder.tv_content.setText(list.get(position).getContent()); friendHolder.tv_time.setText(list.get(position).getTime()); switch (list.get(position).getResult()) { case -1: case 0: friendHolder.tv_ts.setVisibility(View.GONE); break; default: friendHolder.tv_ts.setVisibility(View.VISIBLE); friendHolder.tv_ts.setText(list.get(position).getResult() + ""); break; } if (users.getIcon().equals("")) { if (users.getSex().equals("男")) { friendHolder.iv.setImageResource(R.mipmap.me_icon_man); } else { friendHolder.iv.setImageResource(R.mipmap.me_icon_woman); } } else { if (users.getIcon().substring(0, 4).equals("http")) { Picasso.with(getActivity()).load(users.getIcon()).resize(200, 200).placeholder(R.mipmap.qq_addfriend_search_friend).error(R.mipmap.qq_addfriend_search_friend).centerInside().into(friendHolder.iv); } else { Picasso.with(getActivity()).load(url_icon + users.getIcon()).resize(200, 200).placeholder(R.mipmap.qq_addfriend_search_friend).error(R.mipmap.qq_addfriend_search_friend).centerInside().into(friendHolder.iv); } } } } @Override public int getItemViewType(int position) { if (list.get(position).getType().equals("add") || list.get(position).getType().equals("agreed")) { return 0; } else if (list.get(position).getType().equals("chat")) { return 1; } else { return 0; } } @Override public int getItemCount() { return list.size(); } } class FriendHolder extends RecyclerView.ViewHolder { CircleImageView iv; TextView tv_title; TextView tv_content; TextView tv_time; BadgeView tv_ts; public FriendHolder(View itemView) { super(itemView); iv = (CircleImageView) itemView.findViewById(R.id.fragment_message_imageview_icon); tv_title = (TextView) itemView.findViewById(R.id.fragment_message_textView_title); tv_content = (TextView) itemView.findViewById(R.id.fragment_message_textView_content); tv_time = (TextView) itemView.findViewById(R.id.fragment_message_textView_time); tv_ts = (BadgeView) itemView.findViewById(R.id.tv_tishi); } } private interface OnItemClickListener { void onItemClick(View view, int position); } private interface OnLongItemClickListener { void onLongItemClick(View view, int position); } }