Merge "Refactor AbsListView position scrollers for better abstraction"

This commit is contained in:
Alan Viverette
2014-02-14 01:48:59 +00:00
committed by Android (Google) Code Review
4 changed files with 584 additions and 517 deletions

View File

@@ -31633,12 +31633,10 @@ package android.widget {
method public int getCheckedItemPosition();
method public android.util.SparseBooleanArray getCheckedItemPositions();
method public int getChoiceMode();
method public int getFirstPositionForRow(int);
method public int getListPaddingBottom();
method public int getListPaddingLeft();
method public int getListPaddingRight();
method public int getListPaddingTop();
method public int getRowForPosition(int);
method public android.view.View getSelectedView();
method public android.graphics.drawable.Drawable getSelector();
method public java.lang.CharSequence getTextFilter();

File diff suppressed because it is too large Load Diff

View File

@@ -35,6 +35,8 @@ import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.CollectionInfo;
import android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo;
import android.view.animation.GridLayoutAnimationController;
import android.widget.AbsListView.AbsPositionScroller;
import android.widget.ListView.ListViewPositionScroller;
import android.widget.RemoteViews.RemoteView;
import java.lang.annotation.Retention;
@@ -1027,13 +1029,8 @@ public class GridView extends AbsListView {
}
@Override
public int getRowForPosition(int position) {
return position / mNumColumns;
}
@Override
public int getFirstPositionForRow(int row) {
return row * mNumColumns;
AbsPositionScroller createPositionScroller() {
return new GridViewPositionScroller();
}
@Override
@@ -2361,4 +2358,33 @@ public class GridView extends AbsListView {
column, 1, row, 1, isHeading, isSelected);
info.setCollectionItemInfo(itemInfo);
}
/**
* Sub-position scroller that understands the layout of a GridView.
*/
class GridViewPositionScroller extends AbsSubPositionScroller {
@Override
public int getRowForPosition(int position) {
return position / mNumColumns;
}
@Override
public int getFirstPositionForRow(int row) {
return row * mNumColumns;
}
@Override
public int getHeightForRow(int row) {
final int firstRowPosition = row * mNumColumns;
final int lastRowPosition = Math.min(getCount(), firstRowPosition + mNumColumns);
int maxHeight = 0;
for (int i = firstRowPosition; i < lastRowPosition; i++) {
final int height = getHeightForPosition(i);
if (height > maxHeight) {
maxHeight = height;
}
}
return maxHeight;
}
}
}

View File

@@ -3775,13 +3775,8 @@ public class ListView extends AbsListView {
}
@Override
public int getRowForPosition(int position) {
return position;
}
@Override
public int getFirstPositionForRow(int row) {
return row;
AbsPositionScroller createPositionScroller() {
return new ListViewPositionScroller();
}
@Override
@@ -3813,4 +3808,24 @@ public class ListView extends AbsListView {
0, 1, position, 1, isHeading, isSelected);
info.setCollectionItemInfo(itemInfo);
}
/**
* Sub-position scroller that understands the layout of a ListView.
*/
class ListViewPositionScroller extends AbsSubPositionScroller {
@Override
public int getRowForPosition(int position) {
return position;
}
@Override
public int getFirstPositionForRow(int row) {
return row;
}
@Override
public int getHeightForRow(int row) {
return getHeightForPosition(row);
}
}
}