如何解决与iPhone一样,右侧带有字母的ListView可能吗?
| 我想知道Android中的ListView是否可以选择将字母放在右边,例如iPhone ListView的范例,如下所示 如果是,有人可以给我提供示例代码。 我不是在寻找ApisDemo带有字母覆盖的字母,而是在寻找像iPhone范例这样的字母。可能吗?解决方法
我不久前实现了类似的功能,因此我修改了我的活动,您可以在下面查看,抱歉,它的评论不是很好-希望对您有所帮助!
public class AZIndexer extends Activity {
ListView myListView;
ArrayList<String> elements;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// elements
String s = \"MNBVCXZLKJHGFDSAQWERTYUIOP\";
Random r = new Random();
elements = new ArrayList<String>();
for (int i = 0; i < 300; i++) {
elements.add(s.substring(r.nextInt(s.length())));
}
Collections.sort(elements); // Must be sorted!
// listview
myListView = (ListView) findViewById(R.id.myListView);
myListView.setFastScrollEnabled(true);
MyAZAdapter<String> adapter = new MyAZAdapter<String>(
getApplicationContext(),android.R.layout.simple_list_item_1,elements);
myListView.setAdapter(adapter);
}
class MyAZAdapter<T> extends ArrayAdapter<T> implements SectionIndexer {
ArrayList<String> myElements;
HashMap<String,Integer> azIndexer;
String[] sections;
public MyAZAdapter(Context context,int textViewResourceId,List<T> objects) {
super(context,textViewResourceId,objects);
myElements = (ArrayList<String>) objects;
azIndexer = new HashMap<String,Integer>(); //stores the positions for the start of each letter
int size = elements.size();
for (int i = size - 1; i >= 0; i--) {
String element = elements.get(i);
//We store the first letter of the word,and its index.
azIndexer.put(element.substring(0,1),i);
}
Set<String> keys = azIndexer.keySet(); // set of letters
Iterator<String> it = keys.iterator();
ArrayList<String> keyList = new ArrayList<String>();
while (it.hasNext()) {
String key = it.next();
keyList.add(key);
}
Collections.sort(keyList);//sort the keylist
sections = new String[keyList.size()]; // simple conversion to array
keyList.toArray(sections);
}
public int getPositionForSection(int section) {
String letter = sections[section];
return azIndexer.get(letter);
}
public int getSectionForPosition(int position) {
Log.v(\"getSectionForPosition\",\"called\");
return 0;
}
public Object[] getSections() {
return sections; // to string will be called to display the letter
}
}
}
使用xml作为:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:orientation=\"vertical\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\">
<ListView
android:id=\"@+id/myListView\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\">
</ListView>
</LinearLayout>
屏幕截图:
, 您可以检查此项目https://github.com/woozzu/IndexableListView。
这是屏幕截图
, 如果您愿意编写代码,则有可能,但是AOSP Contacts应用程序中显示的快速滚动器是平台提供的呈现部分索引列表的方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。