android 字母索引三方,Android ListView字母索引(仿微信通讯录列表)

布局代码

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/letterListView"

android:layout_width="match_parent"

android:layout_height="match_parent" >

MainActivity

public class MainActivity extends Activity

{

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

LetterListView letterListView = (LetterListView) findViewById(R.id.letterListView);

letterListView.setAdapter(new TestAdapter());

}

/**

* 这里 使用一个简单的 NameValuePair 对象,做为测试

*@Title:

*@Description:

*@Author:Justlcw

*@Since:2014-5-13

*@Version:

*/

class TestAdapter extends LetterBaseListAdapter

{

/** 字母对应的key,因为字母是要插入到列表中的,为了区别,所有字母的item都使用同一的key. **/

private static final String LETTER_KEY = "letter";

/** 这里的数据都已经按着字母排序好了, 所以传入进来的数据也应排序好,不然会出现跳转问题. **/

String[] dataArray = {

"鞍山", "案场", "白宫", "白云", "白俄", "长沙", "常州", "常熟", "大厂", "大娜迦",

"福州", "福建", "富豪", "广州", "湖南", "湖北", "胡同", "加州","加拉大", "家具",

"开门", "开始", "可能", "连接", "利用","煤化工", "密度","漫画", "你好", "你的",

"哪些", "欧版", "排行", "贫困", "平时", "请问", "确认", "其他", "染发", "让他",

"头像", "是个", "数据", "天空", "退出", "提示", "为空", "维护", "新建", "想到",

"用户", "阅读", "知道", "这本", "足球"};

public TestAdapter()

{

super();

List dataList = new ArrayList();

for(int i=0; i

{

NameValuePair pair = new BasicNameValuePair(String.valueOf(i), dataArray[i]);

dataList.add(pair);

}

setContainerList(dataList);

}

@Override

public Object getItem(int position)

{

return list.get(position);

}

@Override

public long getItemId(int position)

{

return position;

}

@Override

public String getItemString(NameValuePair t)

{

return t.getValue();

}

@Override

public NameValuePair create(char letter)

{

return new BasicNameValuePair(LETTER_KEY, String.valueOf(letter));

}

@Override

public boolean isLetter(NameValuePair t)

{

//判断是不是字母行,通过key比较,这里是NameValuePair对象,其他对象,就由你自己决定怎么判断了.

return t.getName().equals(LETTER_KEY);

}

@Override

public View getLetterView(int position, View convertView, ViewGroup parent)

{

//这里是字母的item界面设置.

if(convertView == null)

{

convertView = new TextView(MainActivity.this);

((TextView)convertView).setGravity(Gravity.CENTER_VERTICAL);

convertView.setBackgroundColor(getResources().getColor(android.R.color.white));

}

((TextView)convertView).setText(list.get(position).getValue());

return convertView;

}

@Override

public View getContainerView(int position, View convertView, ViewGroup parent)

{

//这里是其他正常数据的item界面设置.

if(convertView == null)

{

convertView = new TextView(MainActivity.this);

((TextView)convertView).setGravity(Gravity.CENTER_VERTICAL);

}

((TextView)convertView).setText(list.get(position).getValue());

return convertView;

}

}

}

实际效果如下

0818b9ca8b590ca3270a3433284dd417.png  

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值