package com.example.wechat01;
import java.util.Arrays;
import android.app.Activity;
import android.content.Context;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.SectionIndexer;
import android.widget.TextView;
import com.example.wechat01.common.PingYinUtil;
import com.example.wechat01.common.PinyinComparator;
import com.example.wechat01.widght.SideBar;
/**
* 通讯录界面
*
* @author allenjuns@yahoo.com
*
*/
public class Fragment_Friends extends Fragment {
private Activity ctx;
private View layout, layout_head;
private ListView lvContact;
private SideBar indexBar;
private TextView mDialogText;
private WindowManager mWindowManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (layout == null) {
ctx = this.getActivity();
layout = ctx.getLayoutInflater().inflate(R.layout.fragment_friends,
null);
initView();
} else {
ViewGroup parent = (ViewGroup) layout.getParent();
if (parent != null) {
parent.removeView(layout);
}
}
return layout;
}
private void initView() {
// TODO 实现本页面的布局
mWindowManager = (WindowManager) ctx
.getSystemService(Context.WINDOW_SERVICE);
lvContact = (ListView) layout.findViewById(R.id.lvContact);
indexBar = (SideBar) layout.findViewById(R.id.sideBar);
indexBar.setListView(lvContact);
mDialogText = (TextView) LayoutInflater.from(getActivity()).inflate(
R.layout.list_position, null);
mDialogText.setVisibility(View.INVISIBLE);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mWindowManager.addView(mDialogText, lp);
indexBar.setTextView(mDialogText);
layout_head = ctx.getLayoutInflater().inflate(
R.layout.layout_head_friend, null);
lvContact.addHeaderView(layout_head);
lvContact.setAdapter(new ContactAdapter(getActivity()));
}
static class ContactAdapter extends BaseAdapter implements SectionIndexer {
private Context mContext;
private String[] mNicks;
@SuppressWarnings("unchecked")
public ContactAdapter(Context mContext) {
this.mContext = mContext;
this.mNicks = nicks;
// 排序(实现了中英文混排)
Arrays.sort(mNicks, new PinyinComparator());
}
@Override
public int getCount() {
return mNicks.length;
}
@Override
public Object getItem(int position) {
return mNicks[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final String nickName = mNicks[position];
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.contact_item, null);
viewHolder = new ViewHolder();
viewHolder.tvCatalog = (TextView) convertView
.findViewById(R.id.contactitem_catalog);
viewHolder.ivAvatar = (ImageView) convertView
.findViewById(R.id.contactitem_avatar_iv);
viewHolder.tvNick = (TextView) convertView
.findViewById(R.id.contactitem_nick);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
String catalog = PingYinUtil.converterToFirstSpell(nickName)
.substring(0, 1);
if (position == 0) {
viewHolder.tvCatalog.setVisibility(View.VISIBLE);
viewHolder.tvCatalog.setText(catalog);
} else {
String lastCatalog = PingYinUtil.converterToFirstSpell(
mNicks[position - 1]).substring(0, 1);
if (catalog.equals(lastCatalog)) {
viewHolder.tvCatalog.setVisibility(View.GONE);
} else {
viewHolder.tvCatalog.setVisibility(View.VISIBLE);
viewHolder.tvCatalog.setText(catalog);
}
}
viewHolder.ivAvatar.setImageResource(R.drawable.head);
viewHolder.tvNick.setText(nickName);
return convertView;
}
static class ViewHolder {
TextView tvCatalog;// 目录
ImageView ivAvatar;// 头像
TextView tvNick;// 昵称
}
@Override
public int getPositionForSection(int section) {
for (int i = 0; i < mNicks.length; i++) {
String l = PingYinUtil.converterToFirstSpell(mNicks[i])
.substring(0, 1);
char firstChar = l.toUpperCase().charAt(0);
if (firstChar == section) {
return i;
}
}
return -1;
}
@Override
public int getSectionForPosition(int position) {
return 0;
}
@Override
public Object[] getSections() {
return null;
}
}
/**
* 昵称
*/
private static String[] nicks = { "阿雅", "北风", "张山", "李四", "欧阳锋", "郭靖",
"黄蓉", "杨过", "凤姐", "芙蓉姐姐", "移联网", "樱木花道", "风清扬", "张三丰", "梅超风" };
}