package com.codecomb.views;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
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.ListView;
import android.widget.TextView;
import com.codecomb.infrastructure.asynctask.DataLoader;
import com.codecomb.module.contacts.Contact;
import com.codecomb.module.contacts.ContactManager;
import com.codecomb.ufreedom.R;
import com.codecomb.views.adapter.ContactsAdapter;
public class MessageFragment extends Fragment implements LoaderCallbacks<List<Contact>>{
private static final String TAG = MessageFragment.class.getSimpleName();
private static final int LOAD_CONTACTS = 0;
public static MessageFragment newInstance() {
return new MessageFragment();
}
private View rootView;
private ListView lvContact;
private ContactsAdapter contactsAdapter;
private List<Contact> contacts;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(TAG, "MessageFragment - onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fgm_message, container, false);
lvContact = (ListView) rootView.findViewById(R.id.lvContact);
lvContact.setEmptyView(rootView.findViewById(R.id.vEmptyView));
contacts = new ArrayList<Contact>();
contactsAdapter = new ContactsAdapter(getActivity(), contacts);
lvContact.setAdapter(contactsAdapter);
initListener();
LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(LOAD_CONTACTS,null, this);
return rootView;
}
private void initListener() {
lvContact.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Contact contact = (Contact) lvContact.getItemAtPosition(position);
Intent intent = new Intent(getActivity(),ChatActivity.class);
intent.putExtra(ChatFragment.EXTRA_CHAT_CONTACT, contact);
startActivity(intent);
}
});
}
public static class ContactsLoader extends DataLoader<List<Contact>> {
public ContactsLoader(Context context) {
super(context);
}
@Override
public List<Contact> loadInBackground() {
return ContactManager.getInstance().getContacts();
}
}
@Override
public Loader<List<Contact>> onCreateLoader(int arg0, Bundle arg1) {
return new ContactsLoader(getActivity());
}
@Override
public void onLoadFinished(Loader<List<Contact>> arg0, List<Contact> cts) {
contacts.addAll(cts);
updateUI();
}
private void updateUI() {
contactsAdapter.notifyDataSetChanged();
}
@Override
public void onLoaderReset(Loader<List<Contact>> arg0) {
}
}