布局代碼
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;
}
}
}
實際效果如下