2015-03-30 117 views
3

試圖在RecyclerView中實現分頁,但是當RecyclerView到達它的末尾並且應用程序開始加載新的數據部分時,RecyclerView跳轉到頂端。RecyclerView在分頁時跳轉到頂部

cityListRecyclerview = (RecyclerView) findViewById(R.id.recyclerView); 
    final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
    cityListRecyclerview.setLayoutManager(linearLayoutManager); 
    loadFromUrl(); 

    cityListRecyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      visibleItemCount = linearLayoutManager.getChildCount(); 
      totalItemCount = linearLayoutManager.getItemCount(); 
      pastVisiblesItems = linearLayoutManager.findFirstVisibleItemPosition(); 

      if (loading) { 
       if ((visibleItemCount+pastVisiblesItems) >= totalItemCount) { 
        loading = false; 
        page++; 
        url += Api.OFFSET_URL + String.valueOf(page); 
        loadFromUrl(); 
        Log.v("LIST", "Last Item Wow !"); 
       } 
      } 
     } 
    }); 

的loadFromUrl()方法:

public void loadFromUrl() { 

    Ion.with(MainActivity.this) 
      .load(url) 
      .asJsonObject() 
      .setCallback(new FutureCallback<JsonObject>() { 

       @Override 
       public void onCompleted(Exception e, JsonObject jsonObject) { 
        progressDialog.dismiss(); 

        JsonArray jsonArray = jsonObject.getAsJsonArray("flats"); 

        jsonObjectToPass = jsonArray; 

        for(int i = 0; i < jsonArray.size(); i++) { 
         JsonElement obj = jsonArray.get(i); 
         JsonObject jsonObject1 = obj.getAsJsonObject(); 
         ............ here parsing JSON object and nothing interesting 
         adapter = new OffersAdapter(MainActivity.this, cityList); 
         adapter.setClickListener(MainActivity.this); 
         loading = true; 
         cityListRecyclerview.setAdapter(adapter); 
        } 

       } 

      }); 

} 

XML文件:

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerView" 
    android:scrollbars="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

而且gradle這個文件:

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:appcompat-v7:22.0.0' 
compile 'com.google.android.gms:play-services:7.0.0'} 

因此,誰能告訴我是什麼做錯了?

回答

4

所以這個問題真的很愚蠢!首先,我提出這兩點成的onCreate()

adapter = new OffersAdapter(MainActivity.this, cityList); 
cityListRecyclerview.setAdapter(adapter); 

並補充

adapter.notifyDataSetChanged(); 

在loadFromUrl()方法,而現在一切正常:d也許有人會有同樣的問題,然後他我會看到我的帖子:D

+0

我正在使用相同的,但再次回收者視圖移動到頂部。 – RAHULRSANNIDHI 2016-03-24 06:36:09

+0

@RAHULRSANNIDHI你是否正在重新加載你的'RecyclerView'?因爲此解決方案適用於需要完全重新加載的情況。 – 2016-03-25 20:53:25

+0

做了同樣的錯誤。適合我! – 2018-03-03 09:28:38