Merge "Refactor AbsListView position scrollers for better abstraction"
This commit is contained in:
committed by
Android (Google) Code Review
commit
23160f4fb9
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user