网络获取数组信息,根据姓名按首字母排序 添加侧滑删除。

package jianlemeistaff.app.jlm.com.jianlemeistaff.activity;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

import com.alibaba.fastjson.JSON;
import com.android.volley.Response;
import com.chauthai.swipereveallayout.SwipeRevealLayout;
import com.zhy.autolayout.AutoFrameLayout;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

import jianlemeistaff.app.jlm.com.jianlemeistaff.R;
import jianlemeistaff.app.jlm.com.jianlemeistaff.bean.Staff;
import jianlemeistaff.app.jlm.com.jianlemeistaff.control.StaffInfoUtil;
import jianlemeistaff.app.jlm.com.jianlemeistaff.utils.BasicNameValuePair;
import jianlemeistaff.app.jlm.com.jianlemeistaff.utils.NameValuePair;
import jianlemeistaff.app.jlm.com.jianlemeistaff.widget.LetterBaseListAdapter;
import jianlemeistaff.app.jlm.com.jianlemeistaff.widget.LetterListView;

/**
 * Created by lixu on 2016/6/2.
 */

public class BossMineContactsActivity extends FragmentActivity implements View.OnClickListener {
    private Activity context;
    private LetterListView mlLetterListView;
    private ImageView back, add;
    private TestAdapter mTestAdapter;
    private RadioButton yixian, houqin, guanlizhe;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.bossmine_contacts);
        context = this;
        setTitleView();
        initview();
        mTestAdapter = new TestAdapter();

        StaffInfoUtil.getStaffListByBossId(context, new Response.Listener<String>() {

            @Override
            public void onResponse(String s) {
                setDataOrder(JSON.parseArray(s, Staff.class));

            }

        });

        mlLetterListView.setAdapter(mTestAdapter);

        yixian.setTextColor(Color.WHITE);
        houqin.setTextColor(Color.BLACK);
        guanlizhe.setTextColor(Color.BLACK);

    }

    private void setTitleView() {
        TextView title = (TextView) findViewById(R.id.title_name);
        title.setText("员工列表");
        findViewById(R.id.title).setBackgroundColor(Color.parseColor("#548269"));

    }

    private void initview() {
        mlLetterListView = (LetterListView) findViewById(R.id.letterListView);
        back = (ImageView) findViewById(R.id.left);
        add = (ImageView) findViewById(R.id.right);

        yixian = (RadioButton) findViewById(R.id.bossmine_yixian_btn);
        houqin = (RadioButton) findViewById(R.id.bossmine_houqin_btn);
        guanlizhe = (RadioButton) findViewById(R.id.bossmine_guanlizhe_btn);

        yixian.setOnClickListener(this);
        houqin.setOnClickListener(this);
        guanlizhe.setOnClickListener(this);

        add.setBackgroundResource(R.drawable.boss_mine_add);

        add.setOnClickListener(this);
        back.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.left:
                finish();
                break;
            case R.id.right:
                startActivityForResult(new Intent(context, AddStaffActivity.class), 834);
                break;

            case R.id.bossmine_yixian_btn:
                yixian.setTextColor(Color.WHITE);
                houqin.setTextColor(Color.BLACK);
                guanlizhe.setTextColor(Color.BLACK);
                break;
            case R.id.bossmine_houqin_btn:
                yixian.setTextColor(Color.BLACK);
                houqin.setTextColor(Color.WHITE);
                guanlizhe.setTextColor(Color.BLACK);
                break;
            case R.id.bossmine_guanlizhe_btn:
                yixian.setTextColor(Color.BLACK);
                houqin.setTextColor(Color.BLACK);
                guanlizhe.setTextColor(Color.WHITE);
                break;

        }
    }

    /**
     * 这里 使用一个简单的 NameValuePair 对象,做为测试
     */
    class TestAdapter extends LetterBaseListAdapter<NameValuePair> {
        private LayoutInflater inflater;
        /**
         * 字母对应的key,因为字母是要插入到列表中的,为了区别,所有字母的item都使用同一的key.
         **/
        private static final String LETTER_KEY = "letter";

        public TestAdapter() {
            super();
            inflater = LayoutInflater.from(getApplicationContext());

        }

        public void setlist(List<Staff> list) {

            List<NameValuePair> dataList = new ArrayList<NameValuePair>();
            for (int i = 0; i < list.size(); i++) {
                NameValuePair pair = new BasicNameValuePair(String.valueOf(i), list.get(i).getName(), list.get(i).getTel(), list.get(i).getPhoto());
                dataList.add(pair);
            }
            setContainerList(dataList);
            notifyDataSetChanged();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public String getItemString(NameValuePair t) {
            return t.getValue();
        }

        @Override
        public NameValuePair create(char letter) {
            return new BasicNameValuePair(LETTER_KEY, String.valueOf(letter),null,null);
        }

        @Override
        public boolean isLetter(NameValuePair t) {
            // 判断是不是字母行,通过key比较,这里是NameValuePair对象,其他对象,就由你自己决定怎么判断了.
            return t.getName().equals(LETTER_KEY);
        }

        @Override
        public View getLetterView(int position, View convertView, ViewGroup parent) {
            // 这里是字母的item界面设置.
            if (convertView == null) {
                convertView = new TextView(context);
                ((TextView) convertView).setGravity(Gravity.CENTER_VERTICAL);
                convertView.setBackgroundColor(getResources().getColor(android.R.color.white));
            }
            ((TextView) convertView).setText(list.get(position).getValue());
            ((TextView) convertView).setTextColor(Color.WHITE);
            ((TextView) convertView).setBackgroundColor(Color.parseColor("#548269"));

            return convertView;
        }

        @Override
        public View getContainerView(final int position, View convertView, ViewGroup parent) {
            ViewHolder mViewdata = null;
            // 这里是其他正常数据的item界面设置.
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.bossmine_contacts_list, null);
                mViewdata = new ViewHolder(convertView);
                convertView.setTag(mViewdata);
            } else {
                mViewdata = (ViewHolder) convertView.getTag();
            }
            mViewdata.name.setText(list.get(position).getValue());
            mViewdata.callphone.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context, "正在拨打!" + list.get(position).getPhoneNumber() + "----" + position, Toast.LENGTH_SHORT).show();
                }
            });

            return convertView;
        }

        private class ViewHolder {
            ImageView icon;
            TextView name;
            SwipeRevealLayout swipeLayout;
            AutoFrameLayout callphone;

            public ViewHolder(View convertView) {
                callphone = (AutoFrameLayout) convertView.findViewById(R.id.callphone);
                icon = (ImageView) convertView.findViewById(R.id.bossmine_icon);
                name = (TextView) convertView.findViewById(R.id.bossmine_name);
                swipeLayout = (SwipeRevealLayout) convertView.findViewById(R.id.swipe_layout);

            }

        }

    }

    private String getAlphabet(String str) {
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        // 输出拼音全部小写
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        // 不带声调
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        String pinyin = null;
        try {
            pinyin = (String) PinyinHelper.toHanyuPinyinStringArray(str.charAt(0),
                    defaultFormat)[0];
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return pinyin.substring(0, 1);
    }

    /*将字符按首字母排序*/
    private void setDataOrder(List<Staff> data) {
        String[] arrays = new String[data.size()];
        for (int i = 0; i < data.size(); i++) {
            arrays[i] = data.get(i).getName();
        }
        for (int i = 0; i < arrays.length; i++) {
            String str = arrays[i];
            String alphabet = str.substring(0, 1);
            /*判断首字符是否为中文,如果是中文便将首字符拼音的首字母和&符号加在字符串前面*/
            if (alphabet.matches("[\\u4e00-\\u9fa5]+")) {
                str = getAlphabet(str) + "&" + str;
                arrays[i] = str;
            }
        }

    /*设置排序语言环境*/
        Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
        Arrays.sort(arrays, com);
        /*遍历数组,去除标识符&及首字母*/
        List<Staff> newdata = new ArrayList<>();
        for (int i = 0; i < arrays.length; i++) {
            String str = arrays[i];
            if (str.contains("&") && str.indexOf("&") == 1) {
                arrays[i] = str.split("&")[1];
                for (int j = 0; j < data.size(); j++) {
                    if (data.get(j).getName().equals(arrays[i])) {
                        newdata.add(data.get(j));
                    }
                }
            }
        }
        mTestAdapter.setlist(newdata);

    }

}

时间: 2024-10-20 19:50:46

网络获取数组信息,根据姓名按首字母排序 添加侧滑删除。的相关文章

iOS中获取本地通讯录联系人以及汉字首字母排序

/***  加载本地联系人*/ - (void)loadLocalContacts { //新建一个通讯录类 ABAddressBookRef addressBooks = nil; if (DeviceVersion < 6.0) { addressBooks = ABAddressBookCreate(); } else { addressBooks =  ABAddressBookCreateWithOptions(NULL, NULL); //获取通讯录权限 dispatch_semap

winform通过网络获取用户信息

1.获取当前部署: public static NameValueCollection GetQueryStringParameters() { NameValueCollection nameValueTable = new NameValueCollection(); if (ApplicationDeployment.IsNetworkDeployed) //判断是否是ClickOnce程序 { string queryString = ApplicationDeployment.Curr

Java编程实现中英混合字符串数组按首字母排序的方法

在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序.例如: ? 1 2 3 4 5 6 7 String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分", "的人", "反对高铁"

Oracle 10g如何对用户姓名,按首字母排序、查询

首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值     SCHINESE_RADICAL_M   按照部首(第一顺序).笔划(第二顺序)排序     SCHINESE_STROKE_M   按照笔划(第一顺序).部首(第二顺序)排序     SCHINESE_PINYIN_M   按照拼音排序 oracle9i中新增了按照拼音.部首.笔画排序功能 用法示例: 拼音 SELECT * FRO

php按照中文首字母排序

1> 网络上很多php的工具类可以将汉字转为拼音: 2> 将拼音进行排序即可 另一种则是类似mysql转码方式: 1 foreach ($array as $key=>$value) 2 { 3 $new_array[$key] = iconv('UTF-8', 'GBK', $value); 4 } 1 foreach ($array as $key=>$value) 2 { 3 $new_array[$key] = iconv('UTF-8', 'GBK', $value);

中文首字母 排序

因项目需要对通讯录中的联系人进行排序,需要对中文字符进行拼音转换.其实这个转换并没有想象中的那么难(因为我们只是把中文转为拼音首字母而已,比如“王”转换为字母w就可以了,而不需要转换为完整的拼音wang).对此,我们找到了一个简便的解决办法:一个老外(代码中签名的作者叫George)用c语言写了一个pinyinFirstLetter函数用于获取中文拼音首字母. 这个函数主要基于一个巨大的c语言char数组,把unicode字符集中所有中文的拼音首字母都映射进去了. pinyinFirstLett

按拼音首字母排序

<?php $temp = array(); // 按拼音首字母排序 foreach($res as $key=>$val){ $index = $this->sortByPinyin($val['note_name']); $temp[$index][] = $val; //先用中间变量数组,根据字母A B C..装着集合在一起的 } $list = array(); foreach($temp as $k=>$v){ $list[$k]['index'] = $k; $list

ORACLE根据中文拼音首字母排序、取得中文拼音首字母函数

根据中文拼音首字母排序.取得中文拼音首字母函数     介绍根据中文的首字母.笔画.部首排序函数[NLSSORT]:           1).首字母           SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_PINYIN_M');           2).笔画     SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_STRO

localeCompare按首字母排序汉字

sort() 方法用于对数组的元素进行排序. 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字.比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值. 若 a 等于 b,则返回 0. 若 a 大于 b,则返回一个大于 0 的值. <script type="text/javascript"> function sortNum