现在可以任何一个帮助我如何看待我这样的看法.请帮我我太混乱了
这里我的代码:——-
phonebooklistview.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/searchTxtBox" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginTop="65dp" android:hint="@string/searchHintTxt" android:singleLine="true" android:drawableLeft="@android:drawable/ic_search_category_default" android:drawablePadding="0dp" android:text="" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:fadingEdge="vertical" android:fastScrollEnabled="true" android:padding="2dp" android:layout_below="@+id/searchTxtBox" > </ListView> <TextView android:id="@+id/phoneBookEmptyView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_gravity="center_horizontal" android:text="@string/phoneBookEmptyMsg" android:textColor="@color/white" android:layout_below="@+id/searchTxtBox" android:layout_marginTop="5dp" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout>
并在PhoneBookList.java文件中
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.phonebooklistview); listView = getListView(); adapter = new ItemsAdapter(this); adapter.notifyDataSetChanged(); listView.setAdapter(adapter); listView.setTextFilterEnabled(true); //listView.setFastScrollEnabled(true); listView.setOnItemLongClickListener(this); listView.setItemsCanFocus(false); listView.setEmptyView(findViewById(R.id.phoneBookEmptyView)); registerForContextMenu(listView); } private class ItemsAdapter extends BaseAdapter implements SectionIndexer { HashMap<String,Integer> alphaIndexer; String[] sections; private LayoutInflater inflater; String[][] items; public ItemsAdapter(Context context) { inflater = LayoutInflater.from(context); this.items = phoneBookDataArr; alphaIndexer = new HashMap<String,Integer>(); int size = items.length; for (int x = 0; x < size; x++) { String name=items[x][2]; String ch = name.substring(0,1); ch = ch.toUpperCase(); alphaIndexer.put(ch,x); Log.e(TAG,"alphaIndexer="+ch); } Set<String> sectionLetters = alphaIndexer.keySet(); ArrayList<String> sectionList = new ArrayList<String>(sectionLetters); Collections.sort(sectionList); sections = new String[sectionList.size()]; sectionList.toArray(sections); } //@Override public View getView(final int position,View convertView,ViewGroup parent) { // here my custom listviewcontentview goes. } public int getCount() { return items.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return 0; } public int getPositionForSection(int section) { Log.e(TAG,"getPositionForSection="+section); return alphaIndexer.get(sections[section]); } public int getSectionForPosition(int position) { Log.e(TAG,"getSectionForPosition="+position); return 1; } public Object[] getSections() { Log.e(TAG,"getSections="+sections.length); for (String str : sections) { Log.e(TAG,str); } return sections; } }
解决方法
添加一个搜索栏
1:使用搜索栏的EditText
2:注册到addTextChangedListener
3:实现onTextChanged(…)方法来跟踪用户输入的字符序列4:使用getText()方法获取currentSearchName.迭代联系人列表以找到匹配的搜索.将匹配的结果存储在列表中,并使用内容适配器显示列表.
详细的实现在以下链接中提供
http://www.androidpeople.com/android-listview-searchbox-sort-items
1:在ContentAdapter类中添加一个侧边栏实现SectionIndexer
2:迭代联系人列表以获取所有名称的缩写
3:实现setSection(..)方法来设置标签
4:当用户点击侧边栏时,实现getPositionForSection(..)去与标签对应的标签.
SideBar的实现可以在以下链接中找到.
http://codelikes.blogspot.com/2012/04/android-alphabet-listview-like-contacts.html?