[] RecyclerView made simple

Overview

TwoWayView

RecyclerView made simple.

Features

  • A LayoutManager base class that greatly simplifies the development of custom layouts for RecyclerView
  • A collection of feature-complete stock layouts including:
    • List
    • Grid
    • Staggered Grid
    • Spannable Grid
  • A collection of stock item decorations including:
    • Item spacing
    • Horizontal/vertical dividers.
  • ListView-style pluggable APIs for:
    • Item click and long click support e.g. OnItemClickListener and OnItemLongClickListener.
    • Item selection (single and multiple) support e.g. setChoiceMode(), setItemChecked(int, boolean), etc.

Snapshot

The new API is still under heavy development but you can try it now via Maven Central snapshots.

Gradle:

repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

dependencies {
    compile 'org.lucasr.twowayview:core:1.0.0-SNAPSHOT@aar'
    compile 'org.lucasr.twowayview:layouts:1.0.0-SNAPSHOT@aar'
}

Stable Release

TwoWayView used to be a standalone AdapterView implementation. You can grab it here from Maven Central as follows.

Grab via Maven:

<dependency>
  <groupId>org.lucasr.twowayview</groupId>
  <artifactId>twowayview</artifactId>
  <version>0.1.4</version>
</dependency>

Gradle:

compile 'org.lucasr.twowayview:twowayview:0.1.4'

If you are using ProGuard add the following line to the rules:

-keep class org.lucasr.twowayview.** { *; }

Want to help?

File new issues to discuss specific aspects of the API and to propose new features.

License

Copyright (C) 2013 Lucas Rocha

TwoWayView's code is based on bits and pieces of Android's
AbsListView, Listview, and StaggeredGridView.

Copyright (C) 2012 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Implement smoothScrollBy, smoothScrollToPosition

    Implement smoothScrollBy, smoothScrollToPosition

    Thanks for this excellent library, the Android development world needs a good horizontal listview implementation.

    Any chance that the smoothScrollBy/smoothScrollToPosition methods will be implemented in this library?

    As far as I can see, this is one of the few remaining features needed to make the twoway-view match the functionality of the standard Android listview.

    opened by Jaap-van-Hengstum 15
  • [core, layouts] Fix attributes confilict with other libs

    [core, layouts] Fix attributes confilict with other libs

    Summary: We added twv prefix to all attributes, this will fix an conflict with Google Play Services library and possible other libraries that use same attributes.

    opened by jacek-marchwicki 12
  • NPE after restore from Parcel

    NPE after restore from Parcel

    Using ListLayoutManager With "Don't Keep Activities" enabled. I'm using the SNAPSHOT

    10-28 17:47:43.980 1338-1338/com.couchsurfing.mobile.debug E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException at org.lucasr.twowayview.widget.BaseLayoutManager.onLayoutChildren(BaseLayoutManager.java:355) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1918) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2155) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:543) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:887) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:887) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:349) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) at android.view.Choreographer.doCallbacks(Choreographer.java:562) at android.view.Choreographer.doFrame(Choreographer.java:532) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)

    opened by nathanielwolf 8
  • No resource identifier

    No resource identifier

    I am getting this error: Error:(1) No resource identifier found for attribute 'twowayview_layoutManager' in package

    I have added the gradle dependency

    opened by finneapps 7
  • Popup autoscroll

    Popup autoscroll

    In the two way view I have some elements, which contain an overflow button. When the button is pressed, a popup menu appears. If I click the button of an element, from the two way view, in the far right or far left, the view automatically scrolls to the next/previous element. Any way to prevent this?

    opened by GolgothSchumi 7
  • Fix potential null pointer in BaseLayoutManager

    Fix potential null pointer in BaseLayoutManager

    If the adapter called a notifyItem (inserted,removed,changed) method before ny item entries had been created, a null pointer was thrown when the BaseLayoutManager attempted to clear the item entries.

    opened by josh-burton 7
  • Allow scrolling from outside

    Allow scrolling from outside

    I want to keep the views moving, e.g. images that slide through slowly without user interaction. If the user does touch events, that should be stopped.

    Any thoughts how this could be achieved? I made a quick hack and made trackMotionScroll public, and periodically called it (like one pixel every 10ms).

    Also, it would be nice to be notified when the user interacts with the view (e.g. touch). Like this, I'd be able to pause the automatic scrolling.

    opened by greenrobot 7
  • Endless scrolling feature

    Endless scrolling feature

    There is anyway to implement the endless scrolling feature, when any listener would load more itens when the user scroll its list to the end?

    With linear LinearLayoutManager I'm used to use the findFirstVisibleItemPosition() method to help me in this implementation, but this method doesn't exists in yours LayoutManager.

    How can i do this now?

    opened by pablobaldez 6
  • General feedback on grid layout managers

    General feedback on grid layout managers

    Hi Lucas,

    I've testing out your layout managers SpannableGrid and StaggeredGrid and so far they seem to work really well.

    I wanted to give you some feedback on a few different things I've run into while putting them into use.

    I have a couple different type of layouts I'm working with. For all of them I needed to tweak the way item spacing offsets work.

    if (firstLane) { // laneOffsetStart = 0; laneOffsetStart = laneSpacing; }

    if (lastLane){ // laneOffsetEnd = 0; laneOffsetEnd = laneSpacing; }

    if (isVertical){ outRect.left = laneOffsetStart; //outRect.top = (isFirstInLane ? 0 : mVerticalSpacing / 2); outRect.top = (isFirstInLane ? mVerticalSpacing : mVerticalSpacing / 2); outRect.right = laneOffsetEnd; outRect.bottom = (isLastInLane ? 0 : mVerticalSpacing / 2); }

    This gave me even spacing around the grid that I needed. It felt wrong to have to modify this though I and wish there was better way to specify it.

    Some of the UI I'm building requires specific items in the adapter to be flush and have no spacing applied. I've hacked around this in SpacingItemDecoration, but I think this might be a common issue people run into.

    I have multiple content types within my grids so I built a small interface that could be implemented to set the row and column spans depending on the content type and position of the item. My solution was not generic in nature but something like this might be a good candidate for your framework.

    Finally a layout manager I have a need for is a mix between the Spannable and Staggered grid styles.

    This manager would allow me to span columns and have dynamic row height like the staggered grid does, but not allow the content to get offset/stagger. The row height would equal the tallest of the items in the row.

    For now I'm just going to use the staggered grid and tweak the layouts so they are less likely to start staggering.

    Thanks again for your work on this. I probably wouldn't have bothered diving into RecyclerView at all had you not published these grid layout managers.

    question 
    opened by darrenhinderer 6
  • Android L

    Android L

    E/AndroidRuntime( 6162): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255) E/AndroidRuntime( 6162): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2317) E/AndroidRuntime( 6162): at android.app.ActivityThread.access$800(ActivityThread.java:143) E/AndroidRuntime( 6162): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258) E/AndroidRuntime( 6162): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime( 6162): at android.os.Looper.loop(Looper.java:135) E/AndroidRuntime( 6162): at android.app.ActivityThread.main(ActivityThread.java:5070) E/AndroidRuntime( 6162): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 6162): at java.lang.reflect.Method.invoke(Method.java:372) E/AndroidRuntime( 6162): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) E/AndroidRuntime( 6162): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) E/AndroidRuntime( 6162): Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class org.lucasr.twowayview.TwoWayView E/AndroidRuntime( 6162): at android.view.LayoutInflater.createView(LayoutInflater.java:629) E/AndroidRuntime( 6162): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:739) E/AndroidRuntime( 6162): at android.view.LayoutInflater.rInflate(LayoutInflater.java:802) E/AndroidRuntime( 6162): at android.view.LayoutInflater.rInflate(LayoutInflater.java:805) E/AndroidRuntime( 6162): at android.view.LayoutInflater.inflate(LayoutInflater.java:500) E/AndroidRuntime( 6162): at android.view.LayoutInflater.inflate(LayoutInflater.java:410) E/AndroidRuntime( 6162): at com.checkthis.frontback.fragments.DiscoverFragment.onCreateView(DiscoverFragment.java:99) E/AndroidRuntime( 6162): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478) E/AndroidRuntime( 6162): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927) E/AndroidRuntime( 6162): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) E/AndroidRuntime( 6162): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) E/AndroidRuntime( 6162): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) E/AndroidRuntime( 6162): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:556) E/AndroidRuntime( 6162): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1217) E/AndroidRuntime( 6162): at android.app.Activity.performStart(Activity.java:5736) E/AndroidRuntime( 6162): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2218) E/AndroidRuntime( 6162): ... 10 more E/AndroidRuntime( 6162): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime( 6162): at java.lang.reflect.Constructor.newInstance(Native Method) E/AndroidRuntime( 6162): at java.lang.reflect.Constructor.newInstance(Constructor.java:288) E/AndroidRuntime( 6162): at android.view.LayoutInflater.createView(LayoutInflater.java:603) E/AndroidRuntime( 6162): ... 25 more E/AndroidRuntime( 6162): Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x3 E/AndroidRuntime( 6162): at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:562) E/AndroidRuntime( 6162): at android.view.View.initializeScrollbars(View.java:4357) E/AndroidRuntime( 6162): at org.lucasr.twowayview.TwoWayView.(TwoWayView.java:389) E/AndroidRuntime( 6162): at org.lucasr.twowayview.TwoWayView.(TwoWayView.java:313) E/AndroidRuntime( 6162): ... 28 more

    opened by gwvatieri 6
  • Horizontal programmatic scroll issues

    Horizontal programmatic scroll issues

    Using the inherited method call scrollTo(int x,int y) DOES scroll the view, but any items in the list that were offscreen do not get drawn (invalidating, notifying change on adapter, nothing tried gets them drawn). So this list does scroll to where it is told, but the elements are undrawn and blank.

    Using method defined in TwoWayView, scrollBy(int delta) does not appear to work on my horizontal scrolling TwoWayView. Does not appear to change the view at all. Looking at the source code I'm not seeing any obvious reason nothing happens, the list is populated (getChildCount() returns non-zero) and it does scroll with gestures and draws the items appropriately, etc.

    Has anyone has accomplished programmatic scrolling with horizontal scroll direction successfully?

    opened by colinmadere 6
  • W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView

    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView

    I'm not able to scroll the TwoWayView and click in the list items. when I create layout with TwoWayView I have warnings

    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F....ID 10,92-710,609 #7f110153 app:id/exclusive_list} during layout: running second layout pass
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F...... 10,92-710,609 #7f110153 app:id/exclusive_list} during second layout pass: posting in next frame
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F....ID 10,92-710,609 #7f110153 app:id/exclusive_list} during layout: running second layout pass
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F...... 10,92-710,609 #7f110153 app:id/exclusive_list} during second layout pass: posting in next frame
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F....ID 10,92-710,609 #7f110153 app:id/exclusive_list} during layout: running second layout pass
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F...... 10,92-710,609 #7f110153 app:id/exclusive_list} during second layout pass: posting in next frame
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F....ID 10,92-710,609 #7f110153 app:id/exclusive_list} during layout: running second layout pass
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F...... 10,92-710,609 #7f110153 app:id/exclusive_list} during second layout pass: posting in next frame
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F....ID 10,92-710,609 #7f110153 app:id/exclusive_list} during layout: running second layout pass
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F...... 10,92-710,609 #7f110153 app:id/exclusive_list} during second layout pass: posting in next frame
    W/View: requestLayout() improperly called by org.lucasr.twowayview.TwoWayView{491072b VFED..C.. .F....ID 10,92-710,609 #7f110153 app:id/exclusive_list} during layout: running second layout pass
    

    and my layout is

    <LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:orientation="vertical"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <LinearLayout
            android:id="@+id/title_exclusive_container"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp41"
            android:background="@color/grey_200">
    
            <TextView
                android:id="@+id/title_exclusive"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="@dimen/dp17"
                android:layout_marginStart="@dimen/dp17"
                android:layout_weight="1"
                android:fontFamily="sans-serif-medium"
                android:text="@string/exclusive_deals"
                android:textColor="@color/simple_black"
                android:textSize="@dimen/sp16" />
    
            <TextView
                android:id="@+id/button_more_exclusive_deals"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:fontFamily="sans-serif-medium"
                android:gravity="center"
                android:paddingEnd="@dimen/dp17"
                android:paddingLeft="@dimen/dp10"
                android:paddingRight="@dimen/dp17"
                android:paddingStart="@dimen/dp10"
                android:text="@string/more"
                android:textAllCaps="true"
                android:textColor="@color/colorPrimary"
                android:textSize="@dimen/sp12"
                android:textStyle="bold" />
        </LinearLayout>
    
        <org.lucasr.twowayview.TwoWayView
            android:id="@+id/exclusive_list"
            style="@style/Categories"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="@dimen/dp5"
            android:drawSelectorOnTop="false"
            android:listSelector="@color/simple_transparent" />
    
    
        <TextView
            android:id="@+id/title_all_deals"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp41"
            android:text="@string/all_deals"
            android:layout_gravity="center_vertical"
            android:background="@color/grey_200"
            android:gravity="center_vertical"
            android:paddingLeft="@dimen/dp17"
            android:fontFamily="sans-serif-medium"
            android:textColor="@color/simple_black"
            android:textSize="@dimen/sp16" />
    </LinearLayout>
    

    where orientation is horizontal

    <style name="Categories">
            <item name="android:orientation">horizontal</item>
     </style>
    

    How could i do to fix this problem?

    opened by vishnumohan345 0
  • StackOverFlow exception on Android 4.0.4

    StackOverFlow exception on Android 4.0.4

    Non-fatal Exception: java.lang.StackOverflowError at android.text.TextLine.handleText(TextLine.java:749) at android.text.TextLine.handleRun(TextLine.java:972) at android.text.TextLine.measureRun(TextLine.java:416) at android.text.TextLine.measure(TextLine.java:295) at android.text.TextLine.metrics(TextLine.java:269) at android.text.Layout.getLineExtent(Layout.java:942) at android.text.Layout.draw(Layout.java:405) at android.widget.TextView.onDraw(TextView.java:5114) at android.view.View.draw(View.java:10994) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.widget.FrameLayout.draw(FrameLayout.java:450) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at org.lucasr.twowayview.TwoWayView.dispatchDraw(TwoWayView.java:3740) at android.view.View.draw(View.java:10997) at org.lucasr.twowayview.TwoWayView.draw(TwoWayView.java:3749) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.support.v7.widget.RecyclerView.drawChild(RecyclerView.java:3838) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:3308) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1127) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.support.design.widget.CollapsingToolbarLayout.drawChild(CollapsingToolbarLayout.java:292) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.widget.FrameLayout.draw(FrameLayout.java:450) at android.support.design.widget.CollapsingToolbarLayout.draw(CollapsingToolbarLayout.java:253) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1127) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.widget.FrameLayout.draw(FrameLayout.java:450) at android.view.View.getDisplayList(View.java:10435) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10433) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:10997) at android.widget.FrameLayout.draw(FrameLayout.java:450) at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126) at android.view.View.getDisplayList(View.java:10435) at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:899) at android.view.ViewRootImpl.draw(ViewRootImpl.java:1910) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2445) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4456) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) at dalvik.system.NativeStart.main(NativeStart.java)

    opened by initiuminc1 0
  • Grid view using gradle compile 'org.lucasr.twowayview:twowayview:0.1.4'

    Grid view using gradle compile 'org.lucasr.twowayview:twowayview:0.1.4'

    I used this gradle file in my android project and use orientation as setOrientation(TwoWayView.Orientation.HORIZONTAL) method. I want to change this to grid lay out. Any help?

    And shall I get the documentation for 'org.lucasr.twowayview:twowayview:0.1.4' the stable release. Currently documentation available based on the recycle view.

    opened by sparkshanto 0
  • TwoWayView is not working in Fragment.

    TwoWayView is not working in Fragment.

    I am using two way view and Its is working fine in Activity but its crashing in Fragment. I am calling from fragment like below code from onCreateView()

    KBCalendar calendar = new KBCalendar(getActivity(),this);
     calendar.loadKBCalendar();
    

    any help ???

    opened by gsnayma01 0
Owner
Lucas Rocha
Mobile UI platform at Facebook. Formerly at Mozilla, GNOME, litl, and Nokia.
Lucas Rocha
A RecyclerView that implements pullrefresh and loadingmore featrues.you can use it like a standard RecyclerView

XRecyclerView a RecyclerView that implements pullrefresh , loadingmore and header featrues.you can use it like a standard RecyclerView. you don't need

XRecyclerView 5.3k Dec 26, 2022
ANDROID. ChipsLayoutManager (SpanLayoutManager, FlowLayoutManager). A custom layout manager for RecyclerView which mimicric TextView span behaviour, flow layouts behaviour with support of amazing recyclerView features

ChipsLayoutManager This is ChipsLayoutManager - custom Recycler View's LayoutManager which moves item to the next line when no space left on the curre

Oleg Beloy 3.2k Dec 25, 2022
A RecyclerView that implements pullrefresh and loadingmore featrues.you can use it like a standard RecyclerView

XRecyclerView a RecyclerView that implements pullrefresh , loadingmore and header featrues.you can use it like a standard RecyclerView. you don't need

XRecyclerView 5.3k Dec 26, 2022
Carousel Recyclerview let's you create carousel layout with the power of recyclerview by creating custom layout manager.

Carousel Recyclerview let's you create carousel layout with the power of recyclerview by creating custom layout manager.

Jack and phantom 504 Dec 25, 2022
RecyclerView : SleepQualityTracker with RecyclerView app

RecyclerView - SleepQualityTracker with RecyclerView app SleepQualityTracker with RecyclerView This app builds on the SleepQualityTracker developed pr

Kevin 2 May 14, 2022
TikTok-RecyclerView - This is a demo app built using 'Koin' a new dependency injection framework for Android along with RecyclerView and ExoPlayer2.

TikTok-RecyclerView Demo About This is a demo app built using 'Koin' a new dependency injection framework for Android along with RecyclerView and ExoP

Baljeet Singh 19 Dec 28, 2022
Android library providing simple way to control divider items (ItemDecoration) of RecyclerView

RecyclerView-FlexibleDivider Android library providing simple way to control divider items of RecyclerView Release Note [Release Note] (https://github

Yoshihito Ikeda 2.4k Dec 18, 2022
Simple plug and play custom RecyclerView

InfiniteScrollRecyclerView Pros: Simple plug and play custom RecyclerView. Easy to use Built on top of RecyclerView, hence it is performant as it work

Frontier 61 Dec 28, 2022
This project is a simple recyclerview example coded in kotlin language.

EXPENSIVE CARS ?? This project is a simple recyclerview example coded in kotlin language. My purpose in writing this project is to practice the recycl

Muhammed Mustafa Geldi 2 Nov 1, 2022
An Android Animation library which easily add itemanimator to RecyclerView items.

RecyclerView Animators RecyclerView Animators is an Android library that allows developers to easily create RecyclerView with animations. Please feel

Daichi Furiya 11.2k Jan 8, 2023
A RecyclerView(advanced and flexible version of ListView in Android) with refreshing,loading more,animation and many other features.

UltimateRecyclerView Master branch: Dev branch: Project website:https://github.com/cymcsg/UltimateRecyclerView Description UltimateRecyclerView is a R

MarshalChen 7.2k Jan 2, 2023
RecyclerView extension library which provides advanced features. (ex. Google's Inbox app like swiping, Play Music app like drag and drop sorting)

Advanced RecyclerView This RecyclerView extension library provides Google's Inbox app like swiping, Play Music app like drag-and-drop sorting and expa

Haruki Hasegawa 5.2k Dec 23, 2022
[UNMAINTAINED] Sticky Headers decorator for Android's RecyclerView

This project is no longer being maintained sticky-headers-recyclerview This decorator allows you to easily create section headers for RecyclerViews us

timehop 3.7k Jan 8, 2023
Pumped up RecyclerView

##Description This is an attempt to make RecyclerView easier to use. Features built in: ProgressBar while adapter hasn't been set EmptyView if adapter

Anton Malinskiy 2.6k Dec 21, 2022
[] Super fast and easy way to create header for Android RecyclerView

DEPRECATED I created this library back in the day when I thought RecyclerView was all new and difficult. Writing an adapter that could inflate multipl

Bartek Lipinski 1.3k Dec 28, 2022
Android Library to provide swipe, click and other functionality to RecyclerView

RecyclerViewEnhanced Android Library to provide swipe, click and other functionality to RecyclerView Usage Add this to your build.gradle file dependen

Nikhil Panju 1k Dec 29, 2022
Don't write a RecyclerView adapter again. Not even a ViewHolder!

LastAdapter Don't write a RecyclerView adapter again. Not even a ViewHolder! Based on Android Data Binding Written in Kotlin No need to write the adap

Miguel Ángel Moreno 781 Dec 19, 2022
Android library defining adapter classes of RecyclerView to manage multiple view types

RecyclerView-MultipleViewTypeAdapter RecyclerView adapter classes for managing multiple view types Release Note [Release Note] (https://github.com/yqr

Yoshihito Ikeda 414 Nov 21, 2022