@Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = layoutInflater.inflate(R.layout.main_adapter_griditem, null); return new ViewHolder(view); }
class ViewHolder extends RecyclerView.ViewHolder{ private ImageView stgvImageView; public ViewHolder(View holderView) { super(holderView); stgvImageView = (ImageView) holderView.findViewById(R.id.stgvImageView); } }
public RecyclerView gridView;// Grid/ListView public AdapterMain adapterMain; public ArrayList<Site> rows; // recycleview. //GridLayoutManager (Grid) LinearLayoutManager (List) public StaggeredGridLayoutManager mLayoutManager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { aq = new AQuery(getActivity()); // final LinearLayout linearLayout = new LinearLayout(getActivity()); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.setGravity(Gravity.CENTER); gridView = new RecyclerView(getActivity()); gridView.setHasFixedSize(true); mLayoutManager = new StaggeredGridLayoutManager(UtilsScreen.getDisplayColumns(getActivity()),StaggeredGridLayoutManager.VERTICAL); // . . gridView.setLayoutManager(mLayoutManager); gridView.setItemAnimator(new DefaultItemAnimator()); // divider //gridView.addItemDecoration(new DividerItemDecoration(getActivity())); // //gridView.setSmoothScrollbarEnabled(true); //gridView.setDivider(new ColorDrawable(this.getResources().getColor(R.color.gray_divider))); //gridView.setDividerHeight(UtilsScreen.dpToPx(8)); rows = new ArrayList<Site>(); linearLayout.addView(gridView); return linearLayout; }
@Override public void onViewCreated(View view,Bundle savedInstanceState) { super.onViewCreated(view,savedInstanceState); adapterMain = new AdapterMain(getActivity(),rows); gridView.setAdapter(adapterMain); gridView.setOnScrollListener(onScroll); }
adapterMain.notifyDataSetChanged(); if (page == 1) gridView.scrollToPosition(0);//
gridView.setOnScrollListener(onScroll); //--- private RecyclerView.OnScrollListener onScroll = new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int[] visibleItems = ((StaggeredGridLayoutManager) gridView.getLayoutManager()).findLastVisibleItemPositions(null); int lastitem=0; for (int i:visibleItems) { lastitem = Math.max(lastitem,i); } if (lastitem>0 && lastitem>adapterMain.data.size()-5 && !isRunning) { if (!internetIsOver) { refresh(); } } } };
public class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{ android.R.attr.listDivider }; private Drawable mDivider; private int offset = 0; public DividerItemDecoration(Context context) { final TypedArray a = context.obtainStyledAttributes(ATTRS); mDivider = a.getDrawable(0); offset = UtilsScreen.dpToPx(16); a.recycle(); } @Override public void onDraw(Canvas c, RecyclerView parent) { drawVertical(c, parent); } public void drawVertical(Canvas c, RecyclerView parent) { final int left = parent.getPaddingLeft(); final int right = parent.getWidth() - parent.getPaddingRight(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child .getLayoutParams(); final int top = child.getBottom() + params.bottomMargin; final int bottom = top + offset;//mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } @Override public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) { outRect.set(0, 0, 0, offset);//mDivider.getIntrinsicHeight()); } }
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:contentPadding="8dp" card_view:cardBackgroundColor="@color/primary_bgr" card_view:cardUseCompatPadding="true" card_view:cardCornerRadius="4dp"> <RelativeLayout android:id="@+id/articleLayout" android:background="@color/primary_bgr" android:layout_width="match_parent" android:layout_height="wrap_content"> //---
public static boolean isTablet(Context context) { boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4); boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); return (xlarge || large); } public static int getDisplayColumns(Activity activity) { int columnCount = 1; if (isTablet(activity)) { columnCount = 2; } return columnCount; }
mLayoutManager = new StaggeredGridLayoutManager(UtilsScreen.getDisplayColumns(getActivity()),StaggeredGridLayoutManager.VERTICAL);
Source: https://habr.com/ru/post/244387/
All Articles