推荐安卓开发神器(里面有各种UI特效和android代码库实例)
- // 获取标题栏索引
- int position = sectionIndexter.getPositionForSection(l[idx]);
- if (position == -1) {
- returntrue;
- }
- // 设置调整到指定区域
- list.setSelection(position);
1. Main.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <ListViewandroid:id="@+id/myListView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
- <android.test.SideBar
- android:id = "@+id/sideBar"
- android:layout_height="fill_parent"
- android:layout_width="22px"
- android:layout_alignParentRight="true"
- />
- </RelativeLayout>
2. listview_row.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- <LinearLayout
- android:id="@+id/section"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <TextView android:id="@+id/textView"
- android:layout_width="wrap_content"
- android:layout_height="80sp"
- android:textSize="45sp"
- />
- </LinearLayout>
3. MyAdapter.java
- package android.test;
- import java.util.ArrayList;
- import android.app.Activity;
- import android.content.Context;
- import android.graphics.Color;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.LinearLayout;
- import android.widget.SectionIndexer;
- import android.widget.TextView;
- publicclass MyAdapter extends BaseAdapter implements SectionIndexer {
- private ArrayList<String> stringArray;
- private Context context;
- public MyAdapter(Context _context, ArrayList<String> arr) {
- stringArray = arr;
- context = _context;
- }
- publicint getCount() {
- return stringArray.size();
- }
- public Object getItem(int arg0) {
- return stringArray.get(arg0);
- }
- publiclong getItemId(int arg0) {
- return0;
- }
- public View getView(int position, View v, ViewGroup parent) {
- LayoutInflater inflate = ((Activity) context).getLayoutInflater();
- View view = (View) inflate.inflate(R.layout.listview_row, null);
- LinearLayout header = (LinearLayout) view.findViewById(R.id.section);
- String label = stringArray.get(position);
- char firstChar = label.toUpperCase().charAt(0);
- if (position == 0) {
- setSection(header, label);
- } else {
- String preLabel = stringArray.get(position - 1);
- char preFirstChar = preLabel.toUpperCase().charAt(0);
- if (firstChar != preFirstChar) {
- setSection(header, label);
- } else {
- header.setVisibility(View.GONE);
- }
- }
- TextView textView = (TextView) view.findViewById(R.id.textView);
- textView.setText(label);
- return view;
- }
- privatevoid setSection(LinearLayout header, String label) {
- TextView text = new TextView(context);
- header.setBackgroundColor(0xffaabbcc);
- text.setTextColor(Color.WHITE);
- text.setText(label.substring(0, 1).toUpperCase());
- text.setTextSize(20);
- text.setPadding(5, 0, 0, 0);
- text.setGravity(Gravity.CENTER_VERTICAL);
- header.addView(text);
- }
- publicint getPositionForSection(int section) {
- if (section == 35) {
- return0;
- }
- for (int i = 0; i < stringArray.size(); i++) {
- String l = stringArray.get(i);
- char firstChar = l.toUpperCase().charAt(0);
- if (firstChar == section) {
- return i;
- }
- }
- return -1;
- }
- publicint getSectionForPosition(int arg0) {
- return0;
- }
- public Object[] getSections() {
- returnnull;
- }
- }
4. SideBar.java
- package android.test;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Paint;
- import android.util.AttributeSet;
- import android.view.MotionEvent;
- import android.view.View;
- import android.widget.ListView;
- import android.widget.SectionIndexer;
- publicclass SideBar extends View {
- privatechar[] l;
- private SectionIndexer sectionIndexter = null;
- private ListView list;
- privatefinalint m_nItemHeight = 29;
- public SideBar(Context context) {
- super(context);
- init();
- }
- public SideBar(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
- privatevoid init() {
- l = newchar[] { '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' };
- setBackgroundColor(0x44FFFFFF);
- }
- public SideBar(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init();
- }
- publicvoid setListView(ListView _list) {
- list = _list;
- sectionIndexter = (SectionIndexer) _list.getAdapter();
- }
- publicboolean onTouchEvent(MotionEvent event) {
- super.onTouchEvent(event);
- int i = (int) event.getY();
- int idx = i / m_nItemHeight;
- if (idx >= l.length) {
- idx = l.length - 1;
- } elseif (idx < 0) {
- idx = 0;
- }
- if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
- if (sectionIndexter == null) {
- sectionIndexter = (SectionIndexer) list.getAdapter();
- }
- int position = sectionIndexter.getPositionForSection(l[idx]);
- if (position == -1) {
- returntrue;
- }
- list.setSelection(position);
- }
- returntrue;
- }
- protectedvoid onDraw(Canvas canvas) {
- Paint paint = new Paint();
- paint.setColor(0xFFA6A9AA);
- paint.setTextSize(20);
- paint.setTextAlign(Paint.Align.CENTER);
- float widthCenter = getMeasuredWidth() / 2;
- for (int i = 0; i < l.length; i++) {
- canvas.drawText(String.valueOf(l[i]), widthCenter, m_nItemHeight + (i * m_nItemHeight), paint);
- }
- super.onDraw(canvas);
- }
- }
5. Main.java
- package android.test;
- import java.util.ArrayList;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.ListView;
- publicclass Main extends Activity {
- /** Called when the activity is first created. */
- @Override
- publicvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- ListView list = (ListView) findViewById(R.id.myListView);
- ArrayList<String> stringList = InitListViewData();
- MyAdapter adapter = new MyAdapter(this, stringList);
- list.setAdapter(adapter);
- SideBar indexBar = (SideBar) findViewById(R.id.sideBar);
- indexBar.setListView(list);
- }
- private ArrayList<String> InitListViewData() {
- ArrayList<String> stringList = new ArrayList<String>();
- stringList.add("aback");
- stringList.add("abash");
- stringList.add("abbey");
- stringList.add("abhor");
- stringList.add("abide");
- stringList.add("abuse");
- stringList.add("candidate");
- stringList.add("capture");
- stringList.add("careful");
- stringList.add("catch");
- stringList.add("cause");
- stringList.add("celebrate");
- stringList.add("forever");
- stringList.add("fable");
- stringList.add("fidelity");
- stringList.add("fox");
- stringList.add("funny");
- stringList.add("fail");
- stringList.add("jail");
- stringList.add("jade");
- stringList.add("jailor");
- stringList.add("january");
- stringList.add("jasmine");
- stringList.add("jazz");
- stringList.add("zero");
- stringList.add("zoo");
- stringList.add("zeus");
- stringList.add("zebra");
- stringList.add("zest");
- stringList.add("zing");
- return stringList;
- }
- }
相关推荐
android 仿联系人索引带索引推移动画
实现像微信上面联系人上面的简单的索引,可以快速定位点击的字母,并显示对应字母拼音开头的联系人
Android 联系人快速索引源码.zip
该Demo主要实现了读取手机中的联系人,并且以字母索引表的形式显示,类似于微信中的手机通讯一样的字母索引表。注意:此Demo是用AndroidStudio编写,请用eclipse开发的小伙伴注意了,别下下来用不了还的转,eclipse...
用三方库字母导航来仿手机联系人列表,可以根据字母索引快速点位联系人
android联系人索引,分组,带列表
仿联系人列表或其他上的字母索引 http://blog.csdn.net/ttdevs/article/details/38944139
安卓仿通讯录及微信联系人侧边栏滑动及字母索引,自定义控件,仿手机联系人 右侧滑动快速查找菜单,列表使用recyclerView,使用第三方pinyin4j-2.5.0.jar获得对应数据的首字母索引
中文文本分类的文档索引机制及分类模型的研究中文文本分类的文档索引机制及分类模型的研究中文文本分类的文档索引机制及分类模型的研究
面向交通管理领域的分类索引算法.pdf
详细讲述了在SQLITE中使用时间字段作索引进行SQL插入及查询操作的方法
1、自定义view——–字母索引列表view 2、listview数据的展示 3、查询本地联系人的相关信息,如姓名、电话号 4、6.0权限适配
SQL Server 索引结构及其使用(聚集索引和非聚集索引)的区别与实例讲解,提高查询速度。
效果和微信联系人列表一样,点击右侧字母快速定位到对应的名字
证监会行业分类与上市公司索引归纳.pdf
Android 自定义View——联系人右侧字母索引==================================================================================================================
源码quickscroll,Quickscroll类似联系人界面右侧的字母索引,当我们按住滚动条滑动,就可以快速滚动到对应的位置,注意:快速滚动索引一般配合pinyin4j.jar使用,完成联系人等的索引。
自己写的一个联系人列表,以及索引list,没有自定义view,两个recyclerview
Oracle 索引 使用方法,索引 使用原理, 索引 使用顺序过程