0
ExpandableListView
과 함께 작동하는 빠른 스크롤링을 얻지 못하는 것 같습니다. 게다가 어댑터에서 구현 한 SectionIndexer
메서드는 실제로 호출되지 않고 중단 점을 통해 확인되었습니다.ExpandableListView에서 빠른 스크롤 작업을 수행 할 수 없음
여기 내 활동 :
private void onCreate(Bundle a) {
...
setContentView(R.layout.mylayout);
...
setListAdapter(myAdapter);
getExpandableListView().setFastScrollEnabled(true);
}
가 여기 내 레이아웃입니다 :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ExpandableListView android:id="@+id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fastScrollEnabled="true"/>
<TextView android:id="@+id/android:empty"
android:text="EMPTY! DOOM!"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
여기 방식으로 작동 내 어댑터입니다 :
public class Adapter extends AbstractExpandableListAdapter<TTD, TTL>
implements SectionIndexer {
public static class TTDHolder {
TextView title;
}
public static class TTLHolder {
TextView title;
ImageView icon;
}
private final Pattern alphaMatch = Pattern.compile("^[a-zA-Z]$");
private final Pattern numberMatch = Pattern.compile("^\\d$");
private LayoutInflater inflater;
public Adapter(Context context, int groupClosedView, int groupExpandedView, int childView,
List<Entry<TTD, List<TTL>>> objects) {
super(context, groupClosedView, groupExpandedView, childView, objects);
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TTDHolder holder;
if (convertView != null) {
holder = (TTDHolder)convertView.getTag();
} else {
convertView = inflater.inflate(R.layout.item, parent, false);
holder = new TTDHolder();
holder.title = (TextView) convertView.findViewById(R.id.item_title);
convertView.setTag(holder);
}
holder.title.setText(this.getObjects().get(groupPosition).getKey().getName());
return convertView;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TTLHolder holder;
if (convertView != null) {
holder = (TTLHolder) convertView.getTag();
} else {
convertView = inflater.inflate(R.layout.item, parent, false);
holder = new TTLHolder();
holder.title = (TextView) convertView.findViewById(R.id.item_title);
holder.icon = (ImageView) convertView.findViewById(R.id.item_icon);
convertView.setTag(holder);
}
holder.title.setText(this.getObjects().get(groupPosition).getValue()
.get(childPosition).getName());
return convertView;
}
public Object[] getSections() {
return "*1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
}
public int getPositionForSection(int section) {
for (Entry<TTD, List<TTL>> entry : this.getObjects()) {
if (entry.getKey().getName().substring(0, 1) == getSections()[section])
return this.getObjects().indexOf(entry);
}
return 0;
}
public int getSectionForPosition(int position) {
List<Object> sections = Arrays.asList(getSections());
return sections.indexOf(this.getObjects().get(position).getKey().getName().substring(0, 1).toUpperCase());
}
}
그러나
, 내가 스크롤, 빠른 스크롤러가 나타나지 않으며, 실제로 SectionIndexer
메서드가 실제로 호출되지 않습니다.