注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

ListView中-----冒气泡的使用  

2015-05-20 00:19:33|  分类: 疯狂Android 讲义 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
描述
在通讯录,邮件等有序列表滑动的时候,提示首字母。
实现
重写ListView的dispatchTouchEvent,在这里暴露一个回调函数出来。
监听这个回调,根据当前listview的第一个可以显示的内容,给出相应的提示。

package com.example.listtoastdemo;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;

public class BaseListView extends ListView {

public BaseListView(Context context) {
super(context, null);
init();
}

public BaseListView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
init();
}

public BaseListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}

/**
* init
*/
@SuppressLint("InlinedApi")
private void init() {
if (Build.VERSION.SDK_INT >= 9) {
setOverScrollMode(View.OVER_SCROLL_NEVER);
}
}

/**
* dispatch key listener
*/
public interface DispatchKeyListener {
public void onDispatchKeyEvent(MotionEvent event);
}

public DispatchKeyListener dispatchKeyListener;

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
dispatchKeyListener.onDispatchKeyEvent(ev);
return super.dispatchTouchEvent(ev);
}

}

重写我们的ListView 的dispatchTouchEvent(MotionEvent ev) 这个接口暴露给外面

ListView 和我们需要现实的东西重合了,这样也就可以创造,是否显示的效果了。


<FrameLayout 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"
tools:context=".MainActivity" >

<com.example.listtoastdemo.BaseListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadingEdge="none" />

<TextView
android:id="@+id/toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/toast_bg"
android:padding="3dip"
android:visibility="gone" />

</FrameLayout>

下面是MAIN

package com.example.listtoastdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import com.example.listtoastdemo.BaseListView.DispatchKeyListener;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initListView();
}

private int lastItemIndex;

private TextView toast;

private BaseListView list;

private void initListView() {
lastItemIndex = -1;
toast = (TextView) findViewById(R.id.toast);
list = (BaseListView) findViewById(R.id.list);
list.dispatchKeyListener = new DispatchKeyListener() {

@Override
public void onDispatchKeyEvent(MotionEvent event) {
switch (event.getAction()) {
case KeyEvent.ACTION_UP:
toast.setVisibility(View.GONE);
break;
default:
if (toast.getVisibility() != View.VISIBLE) {
toast.setVisibility(View.VISIBLE);
}
if (list.getFirstVisiblePosition() != lastItemIndex) {
lastItemIndex = list.getFirstVisiblePosition();
String num = (String) list.getAdapter().getItem(
lastItemIndex);
num = num.substring(0, 1);
String str = getResources().getString(R.string.first_num_format);
str = String.format(str, num);
toast.setText(str);
}
break;
}
}
};
// adapter
int num = 150;
String[] array = new String[num];
for (int i = 0; i < num; i++) {
array[i] = String.valueOf(i);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, array);
list.setAdapter(adapter);
}

}


其实是非常的简单的,就是监听我们的moveUP的时候让她隐藏起来哈哈!
  评论这张
 
阅读(2)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017