`
abc20899
  • 浏览: 932754 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android中实现ListView滑动首字母提示 .

 
阅读更多
其中overlay是提示字母View的布局文件,如下:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="100dp" android:maxWidth="100dp" android:gravity="center"
android:textSize="55sp" android:textColor="#ffffffff"
android:background="@drawable/blue_bg" android:padding="10dp"
android:layout_margin="8dp" android:visibility="invisible" />

MainActivity中,onCreate方法如下:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, mStrings));
getListView().setOnScrollListener(this);
LayoutInflater inflate = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDialogText = (TextView) inflate.inflate(R.layout.overlay, null);
mDialogText.setVisibility(View.INVISIBLE);
mHandler.post(new Runnable() {

public void run() {
mReady = true;
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);
}});
}

首先像ListView中填充数据:

setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, mStrings));

加载首字母提示的View布局:

LayoutInflater inflate = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDialogText = (TextView) inflate.inflate(R.layout.overlay, null);
mDialogText.setVisibility(View.INVISIBLE);
mHandler.post(new Runnable() {

public void run() {
mReady = true;
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);
}});

注册滑动监听事件:

getListView().setOnScrollListener(this);

在滑动时间onScroll方法中,修改展示首字母提示:

if (mReady) {
char firstLetter = mStrings[firstVisibleItem].charAt(0);
if (!mShowing && firstLetter != mPrevLetter) {

mShowing = true;
mDialogText.setVisibility(View.VISIBLE);
}
mDialogText.setText(((Character)firstLetter).toString());
mHandler.removeCallbacks(mRemoveWindow);
mHandler.postDelayed(mRemoveWindow, 1000);
mPrevLetter = firstLetter;
}

mHandler.postDelayed(mRemoveWindow, 1000);

延迟一秒执行.项目源码见:http://bigcateasymorse.googlecode.com/svn/trunk/listview_fristletter/
分享到:
评论

相关推荐

    ListView滑动时首字母提示

    实现"ListView滑动时首字母提示"这一功能,主要涉及以下几个关键点: 1. 数据结构与排序:首先,你需要确保你的数据模型(如Java Bean)包含一个表示首字母的字段,例如`firstChar`。在加载数据时,先根据这个字段...

    listView滑动显示首字母

    综上所述,实现"ListView滑动显示首字母"的功能涉及了自定义ListView适配器、滑动事件监听、首字母计算和显示、性能优化以及测试等多个方面。在实际开发中,可以参考提供的listview_fristletter项目,结合以上知识点...

    Android应用源码之带有拼音首字母排序的listview.zip

    本示例源码“Android应用源码之带有拼音首字母排序的listview”着重于如何在ListView中实现基于拼音首字母的排序功能,这在中文应用中非常常见,如联系人应用或各类列表检索。下面将详细介绍这一功能的实现原理和...

    安卓A-Z字母排序索引相关-ListviewFilter-master(listView右侧字母索引).zip

    在Android的ListView中,这种功能通常通过实现一个可滚动的侧边栏与ListView同步,当用户点击字母时,ListView会跳转到对应首字母的数据项。 【描述】"ListviewFilter-master(listView右侧字母索引).zip"是一个项目...

    android快速滑动列表+首字母提示(仿通讯录)

    10. **第三方库支持**:Android社区提供了许多库,如SectionIndexer、FastScroll、SwipeRefreshLayout等,可以帮助开发者更轻松地实现快速滑动和首字母提示功能。 通过理解和熟练掌握以上知识点,开发者可以创建出...

    安卓listview相关相关-Android中ListView字母排序实现字母挤压效果以及右侧快速选中字母搜索关键字功能.rar

    侧边栏的点击事件需要与ListView的滚动事件关联,当用户选择一个字母时,计算出对应首字母的数据项在列表中的位置,并调用ListView的`smoothScrollToPosition()`方法实现平滑滚动。 4. **搜索关键字功能**: 实现...

    android快速滑动列表 首字母提示contactlist

    总的来说,创建一个带有首字母提示的快速滑动列表需要对Android的ListView、Adapter机制有深入理解,同时掌握事件监听、视图复用和数据异步加载等技巧。通过实践和不断优化,我们可以为用户提供流畅且高效的接触人...

    android快速滑动列表+首字母提示(改进版)

    在Android开发中,快速滑动列表(FastScroll ListView)结合首字母提示功能是常见的用户界面设计,尤其在处理大量数据时,如通讯录应用。这种功能可以提高用户体验,让用户能够迅速定位并选择所需项。本教程将深入...

    android实现ListView字母排序并调整字母位置

    本篇文章将详细讲解如何在Android中实现ListView的字母排序以及调整字母位置。 首先,我们需要理解字母排序的基本原理。通常,我们可以通过对数据源进行排序来实现这一目标。假设我们的数据源是一个包含字符串的...

    动态加载ListView且滑动显示提示信息的实现例子

    2. **计算首字母**:在ListView的滚动监听事件中,计算当前可视范围内第一个Item的首字母,并更新Header View中的TextView。 3. **处理边界情况**:确保在ListView顶部时,首字母提示为第一个数据项的首字母;在...

    AndroidListView侧栏字母条索引定位demo

    它的作用是在ListView的右侧或顶部显示一个可滑动的字母条,用户可以通过点击字母来快速跳转到对应首字母的数据项。这种设计在联系人应用或者带有大量分类数据的列表中非常常见。 要实现这个功能,我们主要涉及以下...

    android listView字母排列

    - 字母索引通常通过一个侧面的"索引栏"(也称为快速滚动条)来实现,用户点击字母时,ListView滚动到对应首字母的数据位置。 - 首先,需要对数据进行预处理,计算每个条目的首字母,并根据首字母构建一个索引列表...

    Android应用源码之按字母索引滑动.zip

    通过学习和理解这个源码项目,开发者不仅可以掌握如何在Android应用中实现按字母索引滑动的功能,还能深入理解Adapter模式、触摸事件处理、性能优化等相关技术,这对提升Android开发技能大有裨益。

    安卓A-Z字母排序索引相关-匹配中文字符串的拼音首字母或英文字符串的首字母缩写.rar

    这个压缩包文件“安卓A-Z字母排序索引相关-匹配中文字符串的拼音首字母或英文字符串的首字母缩写.rar”很可能包含了一系列实现这一功能的代码示例。 匹配中文字符串的拼音首字母通常涉及到以下知识点: 1. 汉字转...

    滑动字母定位listview的对应字母的item

    在提供的`SlippingSearch`文件中,可能包含了实现滑动字母定位功能的相关代码,包括自定义的侧边栏布局、ListView适配器以及滚动监听器的实现。通过阅读和理解这些代码,你可以更深入地掌握滑动字母定位的实现细节,...

    android快速滑动列表+首字母提示(仿通讯录,iphone)

    在Android开发中,实现“快速滑动列表+首字母提示”功能,通常是为了提供类似iPhone通讯录的用户体验。这个功能让用户能够迅速定位并选择所需的联系人,通过滑动右侧的字母栏,列表会自动滚动到对应首字母的联系人。...

    滑动显示首字母的ListView

    滑动显示首字母的ListView是一种在Android开发中常见的优化ListView用户体验的设计。这种设计通常用于大量数据的列表展示,特别是当数据需要按照字母顺序排列时,用户可以通过滑动来快速定位到目标条目。以下是对这...

    Android中ListView字母排序,实现字母挤压效果以及右侧快速选中字母,搜索关键字功能

    以上就是如何在Android中实现ListView字母排序、字母挤压效果、右侧快速选中字母和搜索关键字功能的详细步骤。在实际开发中,你可能需要根据项目需求对这些功能进行微调,但基本思路和代码结构应当类似。希望这个...

    Android字母索引ListView

    `Android字母索引ListView`是ListView的一个增强版,它模仿了微信等应用中常见的联系人列表功能,允许用户通过点击屏幕侧边的字母栏快速跳转到对应首字母的条目,提高用户体验。这个实现通常涉及到自定义Adapter、...

Global site tag (gtag.js) - Google Analytics