Giter Site home page Giter Site logo

anitaa1990 / paginglibrary-sample Goto Github PK

View Code? Open in Web Editor NEW
171.0 5.0 65.0 569 KB

An open source app that is refactored to demo Paging Library from Android Jetpack

Java 100.00%
android android-application-components paging-library data-binding retrofit2-rxjava java-8 mvvm-architecture android-application android-sample-application android-studio

paginglibrary-sample's People

Contributors

alexbirkett avatar anitaa1990 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

paginglibrary-sample's Issues

Crash with error FATAL EXCEPTION: main

I think you forget commit CircleImageView and CustomTextView

07-11 12:39:26.967 5858-5858/com.an.paginglibrary.sample E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.an.paginglibrary.sample, PID: 5858
    android.view.InflateException: Binary XML file line #22: Error inflating class com.an.paginglibrary.sample.views.CircleImageView
        at android.view.LayoutInflater.createView(LayoutInflater.java:637)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:747)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:810)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:508)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:418)
        at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
        at com.an.paginglibrary.sample.databinding.FeedItemBinding.inflate(FeedItemBinding.java:127)
        at com.an.paginglibrary.sample.databinding.FeedItemBinding.inflate(FeedItemBinding.java:123)
        at com.an.paginglibrary.sample.adapters.FeedListAdapter.onCreateViewHolder(FeedListAdapter.java:45)
        at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6685)
        at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5869)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
        at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
        at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
        at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
        at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
        at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
        at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3529)
        at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4082)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:606)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
        at android.view.View.layout(View.java:15701)
        at android.view.ViewGroup.layout(ViewGroup.java:5041)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2130)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1887)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1104)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5962)
    	at

How to implement in swipeRefresh

Thanks a lot, i have read your article and very nice, but i have some question to you, i want to implement SwipeRefresh in paging, and i try to invalidate the liveDataSource but when invalidate , adapter empty and display again after load finish. can you give me an idea when start refresh , adapter not empty , adapter will be replace after refresh finish

what does Executor do in FeedViewModel Class?

First thanks to you for this tutorial application.

I am curious about to know some items that you have used in this application. those are follows.

  • why we set setFetchExecutor to LivePagedListBuilder in FeedViewModel Class?

  • What does executor = Executors.newFixedThreadPool(5) means ?

  • After testing on mobile and i switched of the internet got the dialog. i need to reloaded network request again. where to do that ?

  • swipe to refresh is not working. any idea ?

question list is so big!!
Thanks in advance.

Got SSLHandshakeException(javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException)

Got this exception while using Retrofit.So i have changed some code in Class RestApiFactory

` public static OkHttpClient.Builder getUnsafeOkHttpClient() {
try {
// Create a trust manager that does not validate certificate chains
final TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@OverRide
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}

                    @Override
                    public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @Override
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return new java.security.cert.X509Certificate[]{};
                    }
                }
        };

        // Install the all-trusting trust manager
        final SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

        // Create an ssl socket factory with our all-trusting manager
        final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
        builder.hostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });
        return builder;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}`

and updated retrofit as

Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(getUnsafeOkHttpClient().build()) // i changed here
.build();

now its working perfectly..

IndexOutOfBoundsException

Tried to test your code and here's the stack trace:

"java.lang.IndexOutOfBoundsException: setSpan (73 ... 14) has end before start"

this line of code:

spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context.getApplicationContext(), R.color.secondary_text)), titleString.lastIndexOf(author) + author.length() + 1, titleString.lastIndexOf(article.getTitle()) - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Not getting data from API.

java.net.UnknownHostException: Unable to resolve host "newsapi.org": No address associated with hostname

Crash at app launch

Hi, i am not able to launch app.
Receiving below issue in logcat. I looked for solutions and tried them but still got the same error.

07-07 11:28:03.513 18254-18254/com.an.paginglibrary.sample E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.an.paginglibrary.sample, PID: 18254
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.an.paginglibrary.sample/com.an.paginglibrary.sample.activity.FeedActivity}: java.lang.RuntimeException: Cannot create an instance of class com.an.paginglibrary.sample.viewmodel.FeedViewModel
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2678)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1490)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6165)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
Caused by: java.lang.RuntimeException: Cannot create an instance of class com.an.paginglibrary.sample.viewmodel.FeedViewModel
at android.arch.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:153)
at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:210)
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134)
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102)
at com.an.paginglibrary.sample.activity.FeedActivity.onCreate(FeedActivity.java:36)
at android.app.Activity.performCreate(Activity.java:6687)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2631)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1490) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6165) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) 
Caused by: java.lang.InstantiationException: java.lang.Class<com.an.paginglibrary.sample.viewmodel.FeedViewModel> has no zero argument constructor
at java.lang.Class.newInstance(Native Method)
at android.arch.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:151)
at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:210) 
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134) 
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102) 
at com.an.paginglibrary.sample.activity.FeedActivity.onCreate(FeedActivity.java:36) 
at android.app.Activity.performCreate(Activity.java:6687) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2631) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1490) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6165) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.