package com.talk.demo; import android.accounts.Account; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.util.Log; 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 android.widget.Toast; import com.talk.demo.core.RecordManager; import com.talk.demo.talk.DialogCache; import com.talk.demo.talk.DialogItem; import com.talk.demo.talk.TalkAllItem; import com.talk.demo.talk.TalkViewItem; import com.talk.demo.util.AccountUtils; import java.util.ArrayList; import java.util.HashMap; public class TalkFragment extends Fragment { private static String TAG = "TalkFragment"; private Context ctx; private ListView mListView; private ArrayList<TalkViewItem> talk_record; private TalkListAdapter talk_adapter; private HashMap<String, ArrayList<DialogCache>> dialog_cache; private RecordManager recordManager; private String ownUser; public TalkFragment(RecordManager recordMgr, Context ctx) { talk_record = new ArrayList<TalkViewItem>(); recordManager = recordMgr; dialog_cache = new HashMap<String, ArrayList<DialogCache>>(); Account accout = AccountUtils.getPasswordAccessibleAccount(ctx); if (accout != null && !TextUtils.isEmpty(accout.name)) { Log.d(TAG,"account name: "+accout.name); ownUser = accout.name; } } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_talk, container, false); ctx = TalkFragment.this.getActivity(); mListView = (ListView)rootView.findViewById(R.id.talk_list); talk_record = recordManager.initDataListTalk(dialog_cache); talk_adapter = new TalkListAdapter(this.getActivity(), talk_record, dialog_cache); mListView.setAdapter(talk_adapter); mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent mIntent = new Intent(ctx, TalkAllItem.class); Bundle mBundle = new Bundle(); DialogItem dialog_item = talk_record.get(position).getListViewItem().get(0); String talkObj = dialog_item.getLink(); if(talkObj.equalsIgnoreCase(ownUser)) { talkObj = dialog_item.getSender(); } Log.d(TAG, "talk object is : "+ talkObj); mBundle.putString("link", talkObj); mBundle.putString("createdate", dialog_item.getCreateDate()); mBundle.putString("createtime", dialog_item.getCreateTime()); mBundle.putParcelableArrayList("recordcache", dialog_cache.get(talkObj)); Log.d(TAG,"items size: "+ dialog_cache.get(talkObj).size()); mIntent.putExtras(mBundle); //mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ctx.startActivity(mIntent); } }); mListView.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { ShowTalkDialog().show(); return true; } }); return rootView; } @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public void onPause() { super.onPause(); } @Override public void onResume () { super.onResume(); Log.d(TAG, "on Resume"); talk_record = recordManager.initDataListTalk(dialog_cache); talk_adapter.notifyDataSetChanged(); } private Dialog ShowTalkDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(ctx); builder.setItems(R.array.talk_opt, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch(which) { case 0: Toast.makeText(ctx, "移除", 2000).show(); break; case 1: Toast.makeText(ctx, "置顶", 2000).show(); break; case 2: Toast.makeText(ctx, "导出", 2000).show(); break; } } }); return builder.create(); } }