您的位置:首页 > 移动开发 > Android开发

android 字母索引 listview

2015-12-14 15:29 489 查看
带有字母所以的listview ,以下是效果图



1.以下是界面的布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent" >

<ListView
android:id="@+id/country_lvcountry"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:divider="@null"
android:scrollbars="none" >
</ListView>

<com.app.shippingcity.widget.phonelist2.SideBar
android:id="@+id/sidrbar"
android:layout_width="20dp"
android:layout_height="fill_parent"
android:layout_gravity="right|center"
android:layout_marginBottom="3dp"
android:background="#00000000" />

<TextView
android:id="@+id/dialog"
android:layout_width="80.0dip"
android:layout_height="80.0dip"
android:layout_gravity="center"
android:background="@drawable/sidebar_dialog_background"
android:gravity="center"
android:textColor="#ffffffff"
android:textSize="30.0dip"
android:visibility="gone" />

</FrameLayout>
主要是一个策划字母索引和一个listview,中间会显示当前选中的字母

2.以下是phonelistactivity类的主要的内容

public class PhoneListActivity extends Activity {
private String[] data={"刘备","关羽","张飞","刘禅","诸葛亮","孙尚香","赵云","姜维","夏侯霸","魏延","黄忠","月英","庞统","曹操","夏侯敦",
"夏侯渊","曹仁","曹丕","张辽","典韦","许褚","张郃","甄姬","司马懿","吕布","庞德","马超","袁熙","徐晃","孙坚","孙策","孙权",
"孙尚香","黄盖","大乔","周瑜","太史慈","周泰","吕蒙","陆逊","甘宁",
"凌统","凌操","孔融","貂蝉","袁绍","袁谭","袁熙","袁尚","张角","张宝","张粱","孟获","祝融",
"assdfa","xialiu","@adsf"};

private ListView sortListView;// 数据显示的listview
private SideBar sideBar;// 字母滑动的bar
private TextView dialog;// 显示当前选中的字母
private SortAdapter adapter;// listviewadapter
private CharacterParser characterParser;//汉字转换成拼音的类
private PinyinComparator pinyinComparator;//根据拼音来排列ListView里面的数据类

private List<SortModel> SourceDateList;
private String type;//起始港,目的港,船公司选择界面

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.reciving_adress);
initViews();
initData();
}

private void initViews() {
type=getIntent().getStringExtra("type");
// 实例化汉字转拼音类
characterParser = CharacterParser.getInstance();
pinyinComparator = new PinyinComparator();
sideBar = (SideBar) findViewById(R.id.sidrbar);
dialog = (TextView) findViewById(R.id.dialog);
sideBar.setTextView(dialog);
// 设置右侧触摸监听
sideBar.setOnTouchingLetterChangedListener(new OnTouchingLetterChangedListener() {

@Override
public void onTouchingLetterChanged(String s) {
// 该字母首次出现的位置
int position = adapter.getPositionForSection(s.charAt(0));
if (position != -1) {
sortListView.setSelection(position);
}
}
});
sortListView = (ListView) findViewById(R.id.country_lvcountry);
sortListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 这里要利用adapter.getItem(position)来获取当前position所对应的对象
Toast.makeText(PhoneListActivity.this,((SortModel) adapter.getItem(position)).getName(),Toast.LENGTH_SHORT).show();
Intent intent=new Intent();
intent.putExtra("data", ((SortModel) adapter.getItem(position)).getName());
setResult(1003, intent);
}
});
}

private void initData(){
SourceDateList = filledData(data);
// 根据a-z进行排序源数据
Collections.sort(SourceDateList, pinyinComparator);
adapter = new SortAdapter(PhoneListActivity.this, SourceDateList);
sortListView.setAdapter(adapter);
}

/**
* 为ListView填充数据
* @param date
* @return
*/
private List<SortModel> filledData(String[] date) {
List<SortModel> mSortList = new ArrayList<SortModel>();

for (int i = 0; i < date.length; i++) {
SortModel sortModel = new SortModel();
sortModel.setName(date[i]);
// 汉字转换成拼音
String pinyin = characterParser.getSelling(date[i]);
String sortString = pinyin.substring(0, 1).toUpperCase();

// 正则表达式,判断首字母是否是英文字母
if (sortString.matches("[A-Z]")) {
sortModel.setSortLetters(sortString.toUpperCase());
} else {
sortModel.setSortLetters("#");
}
mSortList.add(sortModel);
}
return mSortList;
}
}
实现也是比较的简单,主要是向listview中添加数据,而在添加数据前,进行了排序,具体的排序类和拼音汉字转换类可以查看源代码

以下是项目的下载地址
http://download.csdn.net/detail/shuang__zi/9354329
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 字母索引