android 通讯录+首字母索引

来源:互联网 发布:数据库建表规范 编辑:程序博客网 时间:2024/05/10 01:52

data类

package com.haiyisoft.mobile.common;import java.io.Serializable;/** * 资料 *  * <p>Modification History:</p> * <p>Date Author Description</p> * <p>--------------------------------------------------------------</p> * <p>2015-06-12                                   new</p> * <p></p> */public class Data implements Serializable {private static final long serialVersionUID = 5913793260231266949L;private int dataId;//资料idprivate String dataName;//资料名称private int organizeId;//资料库idprivate String organizeName;//资料库名称private int parentOrganizeId;//资料属于的资料库idprivate String dataUpdateTime;//资料更新时间private String dataSize;//资料更新时间private boolean isData;// 是资料还是资料库private boolean isLeaf;// 如果是资料库,则是否是最后一级private String shortName;// 字母索引private String pyName;// 姓名拼音public Data() {}public Data(int organizeId, String organizeName, int dataId, String dataName, int parentOrganizeId, boolean isData, String shortName,boolean isLeaf, String pyName,String dataUpdateTime,String dataSize) {this.dataId = dataId;this.dataName = dataName;this.organizeId = organizeId;this.organizeName = organizeName;this.parentOrganizeId = parentOrganizeId;this.isData = isData;this.shortName = shortName;this.isLeaf = isLeaf;this.pyName = pyName;this.dataUpdateTime = dataUpdateTime;this.dataSize = dataSize;}public String getDataSize() {return dataSize;}public void setDataSize(String dataSize) {this.dataSize = dataSize;}public int getDataId() {return dataId;}public void setDataId(int dataId) {this.dataId = dataId;}public String getDataName() {return dataName;}public void setDataName(String dataName) {this.dataName = dataName;}public String getDataUpdateTime() {return dataUpdateTime;}public void setDataUpdateTime(String dataUpdateTime) {this.dataUpdateTime = dataUpdateTime;}public void setData(boolean isData) {this.isData = isData;}public int getdataId() {return dataId;}public void setdataId(int dataId) {this.dataId = dataId;}public String getdataName() {return dataName;}public void setdataName(String dataName) {this.dataName = dataName;}public int getOrganizeId() {return organizeId;}public void setOrganizeId(int organizeId) {this.organizeId = organizeId;}public String getOrganizeName() {return organizeName;}public void setOrganizeName(String organizeName) {this.organizeName = organizeName;}public int getParentOrganizeId() {return parentOrganizeId;}public void setParentOrganizeId(int parentOrganizeId) {this.parentOrganizeId = parentOrganizeId;}public boolean isData() {return isData;}public void setPerson(boolean isData) {this.isData = isData;}public String getShortName() {return shortName;}public void setShortName(String shortName) {this.shortName = shortName;}public boolean isLeaf() {return isLeaf;}public void setLeaf(boolean isLeaf) {this.isLeaf = isLeaf;}public String getPyName() {return pyName;}public void setPyName(String pyName) {this.pyName = pyName;}}


activity

package com.haiyisoft.teamassistant.activity;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Locale;import android.content.Intent;import android.graphics.Color;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.view.Gravity;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import com.haiyisoft.mobile.common.Data;import com.haiyisoft.teamassistant.R;import com.haiyisoft.teamassistant.adapter.DataIndexListAdapter;import com.haiyisoft.teamassistant.swipeback.BaseActivity;/** * 资料 *  *  *         <p> *         Modification History: *         </p> *         <p> *         Date Author Description *         </p> *         <p> *         -------------------------------------------------------------- *         </p> *         <p> *         *         </p> *         <p> *         </p> */public class DataActivity extends BaseActivity {public static String[] alphabetList = { "A", "B", "C", "D", "E", "F","G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S","T", "U", "V", "W", "X", "Y", "Z" };private int category = 1;// 分类,通过传入的参数来确定布局:0表示当前布局为拼音索引,1表示当前布局为组织筛选private int levelId = 0;// 当前组织结构层级private List<Data> organizeList;// 组织结构层级列表private EditText searchEdit;/** 拼音索引列表 */private DataIndexListAdapter adapter;/** 组织列表 */private LinearLayout organizeLayout;// 组织部门线性布局,用来显示或隐藏private LinearLayout organizeTabGroup;// 组织部门顶部横向标签,用来展示当前的组织流private ListView organizeListView;// 联系人标签相应内容类@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_data);setActivityHeaderTitle(R.string.data_activity_name);getHeaderLeftButton().setImageResource(R.drawable.icon_back);getHeaderRightButton().setBackgroundResource(0);getHeaderRightButton().setVisibility(View.VISIBLE);getHeaderRightButton().setImageDrawable(getResources().getDrawable(R.drawable.work_mail_search));organizeList = new ArrayList<Data>();organizeList.add(new Data(0, "总部", 0, "", -1, false, "", false, "zb","2015-06-10",""));// 初始化的时候先增加一条数据initView(1);// 绑定拼音索引布局// 设定header 内容}/** 组织部门顶部横向标签的布局参数 */private LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);/** * 初始化视图组件 */public void initView(int category) {this.category = category;// 初始化适配器,这里new一个ArrayList,因为两种布局都要用到它,然后具体显示哪一种的时候再重新加载数据并刷新adapter = new DataIndexListAdapter(DataActivity.this, new ArrayList<Data>());adapter.setCategory(category);// 绑定搜索框searchEdit = (EditText) findViewById(R.id.edt_searchbar);addSearchTextWatcher();// 绑定拼音索引布局// 绑定组织筛选布局organizeLayout = (LinearLayout) findViewById(R.id.data_organize_ll);organizeTabGroup = (LinearLayout) findViewById(R.id.organize_tab_group);organizeListView = (ListView) findViewById(R.id.data_organizelistview);initOrganizeView();// 设置显示内容showCategoryView();}/** * 添加搜索框监听 */private void addSearchTextWatcher() {searchEdit.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void afterTextChanged(Editable s) {List<Data> list = new ArrayList<Data>();List<Data> totalList = new ArrayList<Data>();if (category == 0) {totalList = getContactList(getContactListInLevel(getContactWithinSameLevel(levelId)));} else {totalList = getContactWithinSameLevel(levelId);}for (Data ct : totalList) {if (ct.getdataName().indexOf(s.toString()) != -1 || ct.getPyName().indexOf(s.toString()) != -1 || ct.getOrganizeName().indexOf(s.toString()) != -1) {list.add(ct);}}adapter.setList(list);adapter.notifyDataSetChanged();}});}/** * 初始化组织筛选内容 */private void initOrganizeView() {// 生成头部refreshHorizontalTopView();// 生成列表organizeListView.setAdapter(adapter);organizeListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Data c = (Data) adapter.getItem(position);if (!c.isData()) {levelId = c.getOrganizeId();adapter.setList(getContactWithinSameLevel(levelId));adapter.notifyDataSetChanged();// 头部添加标签,直接添加organizeList.add(c);refreshHorizontalTopView();} else {Intent intent = new Intent(DataActivity.this, PdfViewActivity.class);      startActivity(intent);}}});}/** * 刷新头部 */private void refreshHorizontalTopView() {organizeTabGroup.removeAllViews();for (int i = 0; i < organizeList.size(); i++) {organizeTabGroup.addView(buildOrganizeTabView(organizeList.get(i)));}}/** * 生成头部Tab标签 *  * @param ContactResult * @return */private TextView buildOrganizeTabView(final Data c) {TextView tv = new TextView(DataActivity.this);tv.setGravity(Gravity.CENTER_VERTICAL);if (c.getParentOrganizeId() != -1) {Drawable drawable = DataActivity.this.getResources().getDrawable(R.drawable.icon_arrow_right);drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());tv.setCompoundDrawables(drawable, null, null, null);tv.setCompoundDrawablePadding(5);}textParams.leftMargin = 5;tv.setLayoutParams(textParams);tv.setText(c.getOrganizeName());tv.setTextColor(Color.parseColor("#666666"));tv.setTextSize(16);tv.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {levelId = c.getOrganizeId();adapter.setList(getContactWithinSameLevel(levelId));adapter.notifyDataSetChanged();// 头部去除标签// 不能循环删除,会报错,需要加入一个中间变量int tabIndex = organizeList.indexOf(c);List<Data> tmp = new ArrayList<Data>();for (int i = 0; i <= tabIndex; i++) {tmp.add(organizeList.get(i));}organizeList.clear();organizeList.addAll(tmp);// 这里是添加临时集合的全部数据,而不是直接把临时集合赋值给organizeListrefreshHorizontalTopView();}});return tv;}/** * 展示画面 * 0:拼音索引布局,1:组织筛选布局 *  * 注:现在只是模拟切换布局,在以后可能会有数据筛选操作,所以还需要加上更新数据部分代码。 *  */public void showCategoryView() {adapter.setCategory(category);organizeLayout.setVisibility(View.VISIBLE);// 更新头部标签,因为查找时添加的标签的顺序是反的,所以这里需要排序organizeList = getParentOrganizeList(levelId);Collections.sort(organizeList, new Comparator<Data>() {@Overridepublic int compare(Data c1, Data c2) {if (c1.getOrganizeId() < c2.getOrganizeId()) {return -1;} else if (c1.getOrganizeId() > c2.getOrganizeId()) {return 1;} else {return 0;}}});refreshHorizontalTopView();adapter.setList(getContactWithinSameLevel(levelId));// 更新数据adapter.notifyDataSetChanged();}/** * 查找字母索引和列表的关系 *  * 还需要的一步操作是:将字母转换成大写,不然点击字母的时候无法匹配到,产生的效果就是没有反应 *  * @param list * @return */public HashMap<String, Integer> getAlphaIndexer(List<Data> list){HashMap<String, Integer> indexrHashMap = new HashMap<String, Integer>();for (int i = 0; i < list.size();i++){if(i == 0){indexrHashMap.put(list.get(0).getShortName().toUpperCase(Locale.getDefault()), i);}if(i == list.size() - 1){break;}if(!list.get(i).getShortName().equals(list.get(i +1).getShortName())){indexrHashMap.put(list.get(i + 1).getShortName().toUpperCase(Locale.getDefault()), i + 1);}}return indexrHashMap;}/** * 查找联系人,不包括部门,还要排序 *  * @param list * @return */public List<Data> getContactList(List<Data> list) {List<Data> tmp = new ArrayList<Data>();for (Data c : list) {if (c.isData()) {tmp.add(c);}}// 按照字母表顺序排序Collections.sort(tmp, new Comparator<Data>() {@Overridepublic int compare(Data c1, Data c2) {char s1 = c1.getShortName().charAt(0);char s2 = c2.getShortName().charAt(0);if (s1 > s2) {return 1;} else if (s1 < s2) {return -1;} else {return 0;}}});return tmp;}/** * 查找指定部门下的全部联系人,包括本部门下的和所有子部门下的联系人,迭代查询 *  * @param list * @return */public List<Data> getContactListInLevel(List<Data> list) {List<Data> tmp = new ArrayList<Data>();for (Data c : list) {if (c.isData()) {tmp.add(c);} else {tmp.addAll(getContactListInLevel(getContactWithinSameLevel(c.getOrganizeId())));}}return tmp;}/** * 查找在同一部门的子部门或者联系人 *  * @param levelId * @return */public List<Data> getContactWithinSameLevel(int levelId) {List<Data> list = new ArrayList<Data>();List<Data> total = getContactListData();for (int i = 0; i < total.size(); i++) {Data c = total.get(i);if (c.isData()) {// 如果是联系人,则判断该联系人所在的部门是否和levelId相同if (levelId == c.getOrganizeId()) {list.add(c);}} else {// 如果是部门,则判断上一级是否和levelId相同if (levelId == c.getParentOrganizeId()) {list.add(c);}}}return list;}/** * 查找指定部门的上级部门列表。因为是迭代向上查询,所以集合中元素的顺序和页面标签显示的顺序正好相反,需要在调用的地方重新排序 * 不在本方法中排序的原因是:迭代查询,排序会占用系统资源。 *  * @param levelId * @return */public List<Data> getParentOrganizeList(int levelId) {List<Data> tmp = new ArrayList<Data>();for (Data c : getContactListData()) {if (!c.isData() && c.getOrganizeId() == levelId) {tmp.add(c);if (c.getParentOrganizeId() >= 0) {tmp.addAll(getParentOrganizeList(c.getParentOrganizeId()));}}}return tmp;}/** * 生成模拟数据 *  * @return */public List<Data> getContactListData() {List<Data> list = new ArrayList<Data>();// 部门list.add(new Data(0, "班组资料", 0, "", -1, false, "", false, "zb","2015-06-10",""));list.add(new Data(1, "班组资料库", 0, "", 0, false, "", true, "cwb","2015-06-10",""));list.add(new Data(2, "人力资源部", 0, "", 0, false, "", true, "rlzyb","2015-06-10",""));list.add(new Data(3, "研发部", 0, "", 0, false, "", false, "yfb","2015-06-10",""));list.add(new Data(4, "班组资料库", 0, "", 0, false, "", false, "qyyycpb","2015-06-10",""));list.add(new Data(5, "班务管理", 0, "", 4, false, "", false, "cpzx","2015-06-10",""));list.add(new Data(6, "安全管理", 0, "", 4, false, "", false, "jszx","2015-06-10",""));list.add(new Data(7, "数字公路产品线", 0, "", 5, false, "", true, "szglcpx","2015-06-10",""));list.add(new Data(8, "燃气一体化产品线", 0, "", 5, false, "", true, "rqythcpx","2015-06-10",""));list.add(new Data(9, "GIS技术组", 0, "", 6, false, "", true, "gisjsz","2015-06-10",""));list.add(new Data(10, "数字公路技术组", 0, "", 6, false, "", true, "szgljsz","2015-06-10",""));list.add(new Data(11, "燃气一体化技术组", 0, "", 6, false, "", true, "rqythjsz","2015-06-10",""));list.add(new Data(12, "济南分布技术组", 0, "", 6, false, "", true, "jnfbjsz","2015-06-10",""));list.add(new Data(13, "企业集成产品线", 0, "", 3, false, "", true, "qyjccpx","2015-06-10",""));list.add(new Data(14, "开发平台产品线", 0, "", 3, false, "", true, "kfptcpx","2015-06-10",""));list.add(new Data(15, "移动应用产品线", 0, "", 3, false, "", true, "ydyycpx","2015-06-10",""));list.add(new Data(16, "通用计算产品线", 0, "", 3, false, "", true, "tyjscpx","2015-06-10",""));list.add(new Data(17, "企业社交产品线", 0, "", 3, false, "", true, "qysjcpx","2015-06-10",""));// 联系人list.add(new Data(1, "财务部", 1, "孙运动", 0, true, "s", false, "syd","2015-06-10","103Mb"));list.add(new Data(1, "财务部", 2, "张冲", 0, true, "z", false, "zc","2015-06-10","103Mb"));list.add(new Data(2, "人力资源部", 3, "王华杰", 0, true, "w", false, "whj","2015-06-10","103Mb"));list.add(new Data(2, "人力资源部", 4, "田园元", 0, true, "t", false, "tyy","2015-06-10","103Mb"));list.add(new Data(3, "研发部", 5, "刘刚", 0, true, "l", false, "lg","2015-06-10","103Mb"));list.add(new Data(3, "研发部", 6, "徐煜", 0, true, "x", false, "xy","2015-06-10","103Mb"));list.add(new Data(13, "企业集成产品线", 7, "韩杰", 3, true, "h", false, "hj","2015-06-10","103Mb"));list.add(new Data(14, "开发平台产品线", 8, "崔定国", 3, true, "c", false, "cdg","2015-06-10","103Mb"));list.add(new Data(15, "移动应用产品线", 9, "高贵升", 3, true, "g", false, "ggs","2015-06-10","103Mb"));list.add(new Data(15, "移动应用产品线", 10, "郭林浩", 3, true, "g", false, "glh","2015-06-10","103Mb"));list.add(new Data(15, "移动应用产品线", 11, "牛亚运", 3, true, "n", false, "nyy","2015-06-10","103Mb"));list.add(new Data(15, "移动应用产品线", 12, "王维", 3, true, "w", false, "ww","2015-06-10","103Mb"));list.add(new Data(15, "移动应用产品线", 13, "王学龙", 3, true, "w", false, "wxl","2015-06-10","103Mb"));list.add(new Data(15, "移动应用产品线", 14, "梁熠超", 3, true, "l", false, "lyc","2015-06-10","103Mb"));list.add(new Data(15, "移动应用产品线", 15, "王斌", 3, true, "w", false, "wb","2015-06-10","103Mb"));list.add(new Data(4, "班组资料库", 16, "7788", 0, true, "w", false, "wyx","2015-06-10","103Mb"));list.add(new Data(5, "产品中心", 17, "刘昌荣", 4, true, "l", false, "lcr","2015-06-10","103Mb"));list.add(new Data(7, "数字公路产品线", 18, "任杰", 5, true, "r", false, "rj","2015-06-10","103Mb"));list.add(new Data(8, "燃气一体化产品线", 19, "赵玉金", 5, true, "z", false, "zyj","2015-06-10","103Mb"));list.add(new Data(6, "技术中心", 20, "郑彬", 4, true, "z", false, "zb","2015-06-10","103Mb"));list.add(new Data(9, "GIS技术组", 21, "迟名伟", 6, true, "c", false, "cmw","2015-06-10","103Mb"));return list;}public int getCategory() {return category;}public void setCategory(int category) {this.category = category;}public int getLevelId() {return levelId;}public void setLevelId(int levelId) {this.levelId = levelId;}}

DataIndexListAdapter

package com.haiyisoft.teamassistant.adapter;import java.util.List;import android.annotation.SuppressLint;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import com.haiyisoft.mobile.common.Data;import com.haiyisoft.teamassistant.R;/** * 资料索引列表适配器 * *  * <p>Modification History:</p> * <p>Date Author Description</p> * <p>--------------------------------------------------------------</p> * <p></p> */@SuppressLint("InflateParams")public class DataIndexListAdapter extends BaseAdapter {private Context context;private LayoutInflater inflater;private List<Data> list;private int category;// 分类,通过传入的参数来确定布局:0表示当前布局为拼音索引,1表示当前布局为组织筛选private int levelId;// 组织id,在选择最后一级部门的时候判断,相等则显示选中状态public DataIndexListAdapter(Context context, List<Data> list) {this.context = context;this.inflater = LayoutInflater.from(context);this.list = list;}@Overridepublic int getCount() {return list == null ? 0 : list.size();}@Overridepublic Object getItem(int position) {return getCount() == 0 ? null : list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View view, ViewGroup parent) {final ViewHolder viewHolder;try {if (view == null) {viewHolder = new ViewHolder();view = inflater.inflate(R.layout.adapter_data_indexlistview_item, null);viewHolder.shortText = (TextView) view.findViewById(R.id.tai_first_alpha);viewHolder.shortLine = view.findViewById(R.id.tai_first_alpha_line);viewHolder.face = (ImageView) view.findViewById(R.id.tv_data_face);viewHolder.name = (TextView) view.findViewById(R.id.tv_data_name);viewHolder.size = (TextView) view.findViewById(R.id.tv_data_size);viewHolder.comp = (TextView) view.findViewById(R.id.tv_data_comp);viewHolder.organize = (TextView) view.findViewById(R.id.tv_data_organize);viewHolder.menu = (ImageView) view.findViewById(R.id.iv_data_menu);viewHolder.aciRow = (RelativeLayout) view.findViewById(R.id.aci_rl_row);view.setTag(viewHolder);} else {viewHolder = (ViewHolder) view.getTag();}Data item = list.get(position);// 根据传入的分类参数来进行布局if (getCategory() == 0) {setDataView(viewHolder, item, position);} else if (getCategory() == 1) {// 判断是联系人还是组织机构if (item.isData()) {setDataView(viewHolder, item, position);} else {setOrganizeView(viewHolder, item);}}} catch (Exception e) {e.printStackTrace();}return view;}/** * 设置联系人显示内容 *  * @param viewHolder * @param item * @param position */private void setDataView(final ViewHolder viewHolder, final Data  item, int position) {viewHolder.organize.setVisibility(View.GONE);viewHolder.comp.setVisibility(View.VISIBLE);viewHolder.menu.setVisibility(View.VISIBLE);viewHolder.face.setVisibility(View.VISIBLE);viewHolder.name.setVisibility(View.VISIBLE);viewHolder.size.setVisibility(View.VISIBLE);viewHolder.comp.setVisibility(View.VISIBLE);viewHolder.name.setText(item.getdataName());viewHolder.size.setText(item.getDataSize());viewHolder.comp.setText(item.getDataUpdateTime());viewHolder.shortText.setVisibility(View.GONE);viewHolder.shortLine.setVisibility(View.GONE);}/** * 设置组织显示内容 *  * @param viewHolder * @param item */private void setOrganizeView(final ViewHolder viewHolder, final Data item) {viewHolder.face.setVisibility(View.GONE);viewHolder.name.setVisibility(View.GONE);viewHolder.size.setVisibility(View.GONE);viewHolder.comp.setVisibility(View.GONE);viewHolder.shortText.setVisibility(View.GONE);viewHolder.shortLine.setVisibility(View.GONE);viewHolder.organize.setVisibility(View.VISIBLE);viewHolder.organize.setText(item.getOrganizeName());viewHolder.menu.setVisibility(View.VISIBLE);if (levelId != item.getOrganizeId()) {viewHolder.menu.setImageResource(R.drawable.icon_item_menu_arrow_right);if (item.isLeaf()) {viewHolder.menu.setVisibility(View.GONE);}} }public class ViewHolder {public TextView shortText;public View shortLine;public ImageView  menu,face;public TextView name, comp, organize,size;private RelativeLayout aciRow;}public List<Data> getList() {return list;}public void setList(List<Data> list) {this.list = list;}public int getCategory() {return category;}public void setCategory(int category) {this.category = category;}public int getLevelId() {return levelId;}public void setLevelId(int levelId) {this.levelId = levelId;}}

大布局data.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"     android:orientation="vertical">     <include layout="@layout/a1_head" /><RelativeLayout    android:layout_width="match_parent"    android:layout_height="match_parent" >    <RelativeLayout        android:id="@+id/searchbar_rl"        android:layout_width="match_parent"        android:layout_height="50.0dp"        android:layout_alignParentTop="true"        android:background="#e6e6e6" >        <EditText            android:id="@+id/edt_searchbar"            style="@style/SecondFontSize"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginLeft="20dp"            android:layout_marginRight="20dp"            android:background="@drawable/edittext_bg"            android:drawableLeft="@drawable/icon_magnifier_gray"            android:drawablePadding="3dp"            android:hint="@string/data_search_hint"            android:maxLength="20"            android:paddingBottom="4dp"            android:paddingLeft="6dp"            android:paddingTop="4dp"            android:singleLine="true"            android:textColor="#c5c5c5"            android:textColorHint="#c5c5c5" />    </RelativeLayout>    <LinearLayout        android:id="@+id/data_organize_ll"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@id/searchbar_rl"        android:orientation="vertical"         android:background="#ffffff"        android:visibility="visible" >        <LinearLayout            android:layout_width="wrap_content"            android:layout_height="50.0dp"            android:orientation="horizontal" >            <ImageView                android:layout_width="wrap_content"                android:layout_height="match_parent"                android:contentDescription="@string/image_description"                android:paddingLeft="8.0dp"                android:src="@drawable/icon_location_mark" />            <HorizontalScrollView                android:layout_width="wrap_content"                android:layout_height="match_parent"                android:scrollbars="none" >                <LinearLayout                    android:id="@+id/organize_tab_group"                    android:layout_width="wrap_content"                    android:layout_height="match_parent"                    android:orientation="horizontal" >                </LinearLayout>            </HorizontalScrollView>        </LinearLayout>        <View            android:layout_width="match_parent"            android:layout_height="1dp"            android:background="#1a000000" />        <ListView            android:id="@+id/data_organizelistview"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:cacheColorHint="#00000000"            android:divider="@null"            android:fadingEdge="none"            android:scrollbars="none" />    </LinearLayout></RelativeLayout></LinearLayout>

adapter的布局adapter_data_indexlistview_item

<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:descendantFocusability="blocksDescendants"    android:orientation="vertical" >    <TextView        android:id="@+id/tai_first_alpha"        style="@style/FirstNumFontSize"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#F5F5F5"        android:paddingLeft="15.0dp"        android:textColor="#444444" />    <View        android:id="@+id/tai_first_alpha_line"        android:layout_width="match_parent"        android:layout_height="0.5dp"        android:background="#DDDDDD" />        <RelativeLayout        android:id="@+id/aci_rl_row"        android:layout_width="match_parent"        android:layout_height="50dp"        android:paddingLeft="15.0dp" >                 <ImageView            android:id="@+id/tv_data_face"            android:layout_width="45dp"            android:layout_height="match_parent"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:contentDescription="@string/image_description"            android:scaleType="center"            android:src="@drawable/customer_contact_address" />        <TextView            android:id="@+id/tv_data_name"            style="@style/SecondFontBoldSize"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_toRightOf="@id/tv_data_face"            android:padding="3.0dp"            android:text="tv_data_name"            android:textColor="#666666" />        <TextView            android:id="@+id/tv_data_comp"            style="@style/ThirdFontSize"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignLeft="@id/tv_data_name"            android:layout_below="@id/tv_data_name"            android:layout_toRightOf="@id/tv_data_face"            android:paddingLeft="3.0dp"            android:text="tv_data_comp"            android:textColor="#888888" /><TextView            android:id="@+id/tv_data_size"            style="@style/ThirdFontSize"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:layout_below="@id/tv_data_name"            android:text="tv_data_size"            android:paddingLeft="3.0dp"            android:textColor="#888888" />        <TextView            android:id="@+id/tv_data_organize"            style="@style/FirstFontSize"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_toRightOf="@id/tv_data_face"            android:gravity="center_vertical"            android:padding="5.0dp"            android:textColor="#666666"            android:visibility="gone" /> <ImageView            android:id="@+id/iv_data_menu"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:layout_marginRight="35.0dp"            android:contentDescription="@string/image_description"            android:scaleType="center" />    </RelativeLayout>    <View        android:layout_width="match_parent"        android:layout_height="0.5dp"        android:background="#DDDDDD" /></LinearLayout>



0 0
原创粉丝点击