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;

}

}

}

實際效果如下

f01f2b7ca4908f50910444f7e7d1e199.jpe  

9c6d8f50da8ea282daa3a3d2652a226f.jpe

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值