in WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java [45:149]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_long_list);
AmbientModeSupport.attach(this);
mHandler = new Handler();
// List of items to display within recyclerView (used by adapter).
mItems = new ArrayList<AppItem>();
mItems.add(new AppItem(null, 0, SampleAppConstants.TITLE, null)); // for title
mItems.add(new AppItem(null, 0, SampleAppConstants.SWITCH, null)); // for switch widget
for (int i = 1; i <= 10; i++) {
mItems.add(
new AppItem(
getResources().getString(R.string.item_text, i),
R.drawable.heart_circle,
SampleAppConstants.NORMAL,
null));
}
// Custom adapter used so we can use custom layout for the rows within the list.
mAdapter =
new LongListRecyclerViewAdapter(
this,
mItems,
new SwitchChangeListener() {
@Override
public void onChange(boolean switchOn) {
WearableActionDrawerView wearableActionDrawer =
findViewById(R.id.action_drawer_long_list);
if (switchOn) {
wearableActionDrawer.setVisibility(
View.VISIBLE); // Hide drawer.
} else {
wearableActionDrawer.setVisibility(
View.INVISIBLE); // Hide drawer.
}
}
});
WearableRecyclerView recyclerView = findViewById(R.id.recycler_view_long_list);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(false);
recyclerView.setAdapter(mAdapter); // Set adapter to the recyclerView.
// Uncomment if you want the action drawer to show while scrolling down.
// WearableActionDrawer mWearableActionDrawer=
// (WearableActionDrawer) findViewById(R.id.action_drawer_long_list);
// mWearableActionDrawer.setShouldPeekOnScrollDown(true);
mPreviousLastVisibleItem = 0; // default
mLastVisibleItem = 0;
mFinishLoad = false;
if (!(recyclerView.getLayoutManager() instanceof LinearLayoutManager)) {
return; // invalid layout manager
}
final LinearLayoutManager layoutManager =
(LinearLayoutManager) recyclerView.getLayoutManager();
recyclerView.addOnScrollListener(
new WearableRecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
mLastVisibleItem = layoutManager.findLastVisibleItemPosition();
if (!mFinishLoad) {
int count =
layoutManager
.getItemCount(); // total items in the recycler view
// Do not notify LongListActivity if no NEW items have been displayed.
if (mLastVisibleItem <= mPreviousLastVisibleItem) {
return;
}
// Do not notify LongListActivity if not yet scrolled to threshold.
if (mLastVisibleItem < count - 1) {
return;
}
if (mLastVisibleItem % 10 == 2 && mLastVisibleItem != 2) {
return;
}
// End of list, no more loading.
if (mLastVisibleItem >= SampleAppConstants.END_OF_LONG_LIST) {
mFinishLoad = true; // we are done loading more items.
addFooter();
return;
}
// Load more items
addData();
// To check if new items should be displayed or not.
mPreviousLastVisibleItem = mLastVisibleItem;
}
}
});
}