2017-12-27 33 views
3

私はRecyclerViewとCardViewを使用してサーバーからさらに多くのデータをスクロールするアプリケーションを作成しています。RecyclerViewを使用してAPIレベルで問題を解決する

私は19に分SDKを設定し、私はそれが唯一の19である必要がありますが、私のメインクラスでは、私が使用しているとき -

public class FunnyMessageList extends AppCompatActivity implements RecyclerView.OnScrollChangeListener{ 


protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_mlistview); 

recyclerView.setOnScrollChangeListener(this); 
} 
} 

をここに私はこれらの2行でエラーを取得しています -

implements RecyclerView.OnScrollChangeListener 
recyclerView.setOnScrollChangeListener(this); 

誤差がある - コールは、APIレベル23を(現在の分が19である)必要があります。android.view.View#setOnScrollChangeListener

、任意のヒントを解決する方法。

答えて

2

、このよう

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); 
      int totalItemCount = layoutManager.getItemCount(); 
      int lastVisibleItem = layoutManager.findLastVisibleItemPosition(); 
      if (!isLoading && totalItemCount <= lastVisibleItem + 1/*When to load*/) { 
       // End has been reached 

        // put your logic here 
        isLoading = true; 

      } 
     } 
    }) 
をお試しください
0

メソッドView.OnScrollChangeListenerがAPI 23に追加されました。その前にアクセスする方法はありません。クラッシュを避けるためにスクロール変更リスナを設定する前に、API 23以上であることを確認することができます。このような

何か:

if (android.os.Build.VERSION.SDK_INT >= 23) { 
    recyclerView.setOnScrollChangeListener(this); 
} 
else { 
    // handle API bellow 23 
} 

それでも私はあなたがあなたの目標を達成するために、上記の方法を使用する必要はないと思います。あなたはaddOnScrollListenerを使用することができ

オプション1:あなたは、いくつかの他のオプションを持っています。 this answerで説明されているように。

オプション2:あなたはオンデマンド負荷より多くのデータを使用したい場合

Paging Libraryを見ています。これは、オンデマンドで簡単にデータを読み込むことができる新しいコンポーネントです。

1

メソッドsetOnScrollChangeListenerはAPI 23で導入されています。したがって、ビルドバージョンチェックでしかアクセスできません。

多くのデータを読み込むには、代わりにaddOnScrollListener()メソッドを使用します。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      super.onScrollStateChanged(recyclerView, newState); 
     } 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
     } 
    }); 
0

this-行います

このタスクを実行したい場合は23にターゲットsdkVersionを変更

を。

targetSdkVersion 23 
compileSdkVersion 23 

in your build.gradle 
関連する問題